perm filename TRACES[DIS,DBL]4 blob
sn#226048 filedate 1976-07-20 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .ASEC(Traces of AM in Action)
C00004 00003 .ASSEC(Prose Traces)
C00041 00004 .ASSEC(A `Nice' Task-by-task Trace)
C00074 00005 :: Restrict the Domain/range facet of Bag-union: because Bags-of-T's
C00109 00006 :: Fill in specializations of TIMES: because TIMES is very
C00143 00007 .ASSEC(An `Unadulterated' Trace)
C00200 ENDMK
C⊗;
.ASEC(Traces of AM in Action)
.ONCE TURN ON "{}"
There are three types of traces which are represented in this
appendix. First comes a high-level prose desription, a
commentary on AM as it goes through a long, successful run. This is
an expanded version of the historian's description of AM as a
mathematician, found in Section {[2]OVERV}.{[2]AMAMSSEC}, on page
{[2]AMAM}.
.ONCE TURN ON "{}"
Next comes a detailed description of what AM did, on a numbered
task-by-task basis. This is an expanded version of the task-by-task
trace given in Section {[3]RESULT}.{[3]SHORTASK}, on page
{[3]SHORTASKP}. For each task, a paragraph is provided explaining
what AM did, why, and what happened. The first few of these task
summaries are listed on page {[3]TRAT}. The task numbers listed there
correspond to the numbering in Section {[3]RESULT}.{[3]SHORTASK}.
Finally, several pages of traces are presented in totally undoctored
form, so the reader can see that (i) it ⊗4is⊗* harder to follow than
the slightly rephrased ones, and yet (ii) those earlier, "doctored"
traces didn't enhance (or alter the the spirit of) what AM printed
out.
.TRACES: ASECNUM ;
.ASSEC(Prose Traces)
.PROS: SSECNUM;
.PROSP: PAGE;
.ONCE TURN ON "{}";
In this section are sketched many of the paths which AM explored
during its runs.
Besides describing what AM did, this section will
explain why, and indicate where each path led.
Along the way, some concepts were created which were interesting to
⊗4us⊗* (in the smug wisdom of millenia of hindsight) but which AM
never bothered to develop. These will be noted, and a stab will be
made to apologize for AM$$ The typical excuse is that AM was
distracted at that moment by some even more interesting task. $. A
few exciting moments occurred when AM became interested in a concept
which had been ignored by humans -- at least, unknown to the author.
Very often the "new discovery" was never shown to be anything other
than cute (e.g., the concept of Timberline; see page {[3]GEOEX} for a
definition and diagram of it).
.COMMENT STRUCTURES;
AM began by exploring structures and structural
operations. After it was started, with the base of knowledge
outlined in the previous chapter, the main activity AM did for the
first several minutes was to fill in examples of various kinds of
structures (e.g., Sets), structural operations (e.g., Insert), and
create new concepts of this type (e.g., Singleton). In more detail,
here is what was done:
Trying to fill in examples of set-operations, AM kept failing because
there were no known examples of Sets to "run" those operations on. So
it turned to filling in examples of Sets. Some of these came from the
recursive definition of a set: "S is a set if S={} or if both (i) we
can pull an element y out of S using Some-member, and (ii)
Set-delete(y,S) is a set". A heuristic rule knew to extract the base case
from such a definition, yielding {} as one example of a set. Another
heuristic said to run operations whose range is `Sets'. One of these is
Set-insert. So a procedure for getting a new set is to take the given
set S, and anything y, and run Set-insert(y,S). When this was done,
using S={}, a bunch of singletons were created. AM literally collected
Examples(Anything) and randomly chose members y from that big and varied
assortment.
Other set-operations were run just to provide some additional examples
of Sets. Not every attempt was successful, of course: one heuristic
said to find some examples of Lists, and then use the View facet of
Sets to transform them into sets. Unfortunately, there were no examples
of any other kinds of structures at the moment, so this rule failed.
After about 20 cpu seconds, the time and space quanta were both just
about exhausted. Roughly 30 examples of sets were found.
In similar ways, examples were found for Bags, Lists, Osets, and Ordered-pairs.
Examples of structural operations were found "incidentally" as above -- to aid
in producing examples of a certain kind of structure. Occasionally, the primary
task (the one selected from the agenda) was to find examples of a given
operation. In that case, AM spent a great deal of time just on that one operation.
For example, consider Set-union. When AM got around to filling in some examples for
it, many examples already existed under the concepts of Sets, Bags, and
Bag-union. One way to get examples of Set-union was by analogy to Bag-union.
This caused some slightly erroneous entries to be found
(e.g., {a,b,c}∪{a,c,e}={a,a,b,c,c,e}). Such errors were soon caught and corrected
when the task ⊗6"Check examples of Set-union"⊗* was chosen from the agenda.
Similar errors and corrections occurred when AM viewed lists as if they were osets,
in order to find examples of osets.
The simple development described above was broken frequently by some new
concept being created and found to be very interesting. In fact, if left to its own
judgment, AM
would never finish the above process, because of these interruptions. The user
must interrupt and tell it to ignore new concepts, if he really wants AM to
finish finding examples of all those structures and operations.
What kinds of
concepts were created, and why? What did AM do to investigate them?
In general, what happened was this: As AM collected examples of a concept C,
the characteristics of its efforts (how easy/hard to find examples, how
varied they were, etc.) caused certain heuristic rules to trigger. Those
rules then caused some new concepts to be created, for a particular reason.
AM would find examples of them, then compare the results with already-known
concepts.
The first instance of this process was when AM found many examples of sets
so easily. A rule said that in such cases, it was worthwhile specializing
the concept Sets. That is, make a new concept which would have fewer
examples. One way AM did this was to look over the Interest features of all
generalizations of Sets, pluck a couple of them, and conjoin them onto the
definition of Sets, thereby getting a definition for a brand new concept,
called interesting-sets or INT-Sets for short.
The feature selected first was the following: each pair of elements of the
structure satisfy the same rare predicate P, for some P. This was previously
tacked onto the Interest facet of Structures.
Initially, there were very few predicates known: Constantly-True, Constantly-False,
Object-Equality.
The following three types of INT-Sets were therefore eventually found:
.BN
(i) Sets -- the same concept but in a new disguise
(for any pair of members from ⊗4any⊗* set, Constantly-True would return True),
(ii) Empty-sets -- an already known concept, but now with a new definition
(for any pair of members from ⊗4any⊗* set, Constantly-False would never return True),
and
(iii) Singletons `{a}' (sets for which all pairs are Equal to each other).
.E
This immediately catapulted the empty set to stardom.
Another heuristic rule had AM restrict its attention to the predicates which were
not trivial. In this case, both Constant-True and Constant-False were no longer eligible.
So the only remaining INT-Sets were those for which all pairs of elements were
Equal. AM decided to explicitly define a new kind of set having just that definition.
This became a specialization of INT-Sets, called Equality-sets or Esets for short.
Since the empty set was already distinguished, it was decided not to include
it as a valid Eset. So Esets were precisely the sets we would call Singletons.
Unfortunately, the set-operation Union, when applied to Singletons, didn't
always yield singletons. By isolating the kind of sets they ⊗4did⊗* yield,
and not counting the few extreme cases when they yielded singletons, AM
discovered the concept of Doubleton: a set with precisely two members.
Typically, the union of Singletons was a doubleton, their intersection
was the empty set, their Set-difference was a singleton, inserting anything
into a singleton was a doubleton, removing something left a singleton, etc.
The exceptions were all related to when the arguments were equal.
Several more structural concepts were created and explored in this way,
besides Singleton:
Doubleton, Tripleton, Function (an operation, all of whose values were
singleton sets: i.e., a single-valued operation),...
In general, these occurred because the intial primitive concepts were
too general, too easy to satisfy.
During its investigation of Set-Intersection, AM noticed that sometimes
X∩Y=X, and formalized that relationship between two sets. This is just the
relation we normally call Superset. The notion of Subset also was discovered,
but AM never had much interest in either of these notions.
When AM looked for examples satisfying the predicate Object-Equality,
abbreviated Equal, the situation was just the opposite. A heuristic rule
attached to `Active' indicated that examples could be found by randomly
instantiating the two arguments of Equal with a pair of objects. There
were about 100 known examples of structures. AM gathered them into one set, and
then repeatedly chose a pair of them to run Equal on.
Thus only about 1% of the time did it succeed (did Equal return the value T).
Another heuristic triggerred, and said that in such cases, it was worthwhile
trying to generalize the predicate Equal. A new task to this effect was added to the
agenda.
Soon, AM selected this task, and tried to create new concepts which were
generalizations of Equal. One definition of Equal was a transparent recursive one,
which essentially said that x and y were Equal iff their Cars and their Cdrs were,
plus it had a base step that asked if both arguments were empty
(in which case Equal returned True), or if precisely one argument was empty
(in which case Equal returned False), or if both arguments were identical
atoms (True), or if they were nonidentical atoms or only one was an atom (False).
.B0 INDENT 0
⊗1λ⊗* (x,y)
IF x and y are identical atoms, THEN return True; ⊃
ELSE IF either x or y is not a list, THEN return False; εαα⊗4Base⊗*
ELSE IF both x and y are Null lists, THEN return True; εαα⊗4Cases⊗*
ELSE IF only one of x or y is Null, THEN return False; $
ELSE both of these must be true:
Equal( CAR(x), CAR(y) )
Equal( CDR(x), CDR(y) )
.E
One heuristic rule that AM possessed suggested that this could be generalized
in a small way by weakening the base step. A couple new concepts were created
this way, but they all turned out to be trivial: either constantly returning
T, or no different than Equal was.
Another heuristic suggested weakening the recursive step. One way to do this,
since the recursive step is a conjunction, is to remove one of the conjuncts.
The rule checks to ensure that the definition is still recursive: one of the remaining
conjuncts must call on the function itself.
In this case, both conjuncts call on Equal, so AM can remove either one. Two new
concepts were generated in this manner. For example, here is one of them, which
AM named "⊗8Equ0⊗*":
.B0 INDENT 0
⊗1λ⊗* (x,y)
IF x and y are identical atoms, THEN return True; ⊃
ELSE IF either x or y is not a list, THEN return False; εαα⊗4Base⊗*
ELSE IF both x and y are Null lists, THEN return True; εαα⊗4Cases⊗*
ELSE IF only one of x or y is Null, THEN return False; $
ELSE Equ0( CDR(x), CDR(y) )
.E
Note that the base cases were unchanged; the recursive step is a recursion in
the CDR direction, but no longer in the CAR direction. A note to that effect
is placed inside the definition of Equ0 itself, as a comment.
Other parts of Equ0 can be filled in easily: it is a generalization of Equal,
it is an example of a Predicate, its domain/range is the same as Equal,
its worth is initially set a little higher than Equal's, etc.
This predicate maps down two lists, one element at a time, and returns True
iff they both become empty at the same moment. That is, iff they have the
same length. In fact, we can assume that the user interrupts and orders AM
to rename Equ0 as "Same-length".
The other new generalization, called "Equ1", examines the CAR's (i.e., the first elements)
of a pair of lists, and returns True if they were identical atoms; if they
were both lists, it recurses on those two lists.
A human LISP programmer's interpretation is as follows: when the two lists
were written out in standard notation (using parentheses), all the initial
left parentheses match, and the first non-left-parenthesis entity of each list
also matches.
Although this is isomorphic to numbers again$$ Two list structures were treated
as equivalent if they have the same number of left parentheses; zero is the
list NIL; adding 1 is consing with NIL; subtracting 1 is CAR. $, AM didn't
pursue this concept very far. Most of the examples of lists AM knew about
were only 1-level deep, although they varied significantly in length.
If it had been otherwise, AM might have developed Equ1 into Same-length,
and lost interest in Equ0.
As it was, the Worth of this concept Equ1
slowly declined, and very few
tasks involving it bubbled up to the top of the agenda.
The concept of Same-length will form the springboard for the development of cardinality,
a tale which is related in a little while.
Before moving on, let's mention a couple more set-theoretic activities that AM
did.
Several moderately interesting compositions and coalescings were done to set-operations.
(Actually, to structure-operations). First let's discuss the coalescings of
operations f(x,y) into new operations f(x,x) -- where a pair of arguments is
made to coincide.
Coalescing Insert (insert S into itself)
led to an operation which always seemed to give
a bigger set than it started with. This led AM to the finitely-true
conjecture that a set is never a member of itself.
The conjecture was rediscovered when the coalescing of Delete seemed to produce
the identity operation (Deleting S from S never seemed to change the value of S).
Coalescing Intersect also gave the identity operation; this showed that S∩S=S
(apparently). Similarly for Union.
Coalescing "Compose" gave a new operation of some value: the notion of composing
f with f. When this was applied to, e.g., Intersect, it created the new
operation Intersect-o-Intersect, which took 3 arguments and formed their
common intersection. By forming this in two ways
-- (x∩y)∩z and also x∩(y∩z) -- AM noticed that they were the same, that
the order didn't matter. Since x∩x had already been shown to be the identity
operation, multiple occurrences of an element in an intersection don't make any
difference.
Finally, AM had constructed x∩y and y∩x as two separate operations, and then
found them to be equivalent. Taking all these results together, it was possible to
view ∩ as taking a ⊗4set⊗* of sets as its
argument, and forming the intersection of all those sets. Thus
∩({ {a,b,c},{c,g,h},{a,c,e} })={c}.
Some valuable compositons were formed. By forming x∩(y∪z) and
(x∩y)∪(x∩z) as two separate compositions, AM found their equivalence
via experimental data. This was one case where the Intuition functions
had given AM an unfair advantage, since the Venn-diagram abstract representation
for sets suggested this relationship explicitly. When the intuition was removed,
the discovery was made much more valid. All of de Morgan's laws were discovered
in this manner, incidentally. Several special cases were singled out, involving
empty sets, singletons, and doubletons.$$
E.g., if x is a singleton, then x∩(y∪z) is equal to either x∩y or to x∩z;
if both those sets were the same, then of course x∩(y∪z) is equal to their
common value; if the two sets differ, then one is empty and the other is
x, and the ultimate intersection is equal to x. Or: that intersection is
always either x or the empty set. $
The compositon Delete-o-Insert is not quite so trivial as one might think:
it takes a structre S, inserts an element e, and then removes element e.
This simple operation can be used to test the type of structure that S is:
it ⊗4never⊗* alters a Bag or a List, but it does alter Sets and Osets.
Orthogonally, Insert-o-Delete always alters Lists and Osets, but can leave
Bags and Sets unchanged. The first composition tests for multiple elements, and the
second composition tests for order. AM defined both of these, and (at least
partially) perceived their abilities to distinguish structural types.
Operations formed by switching the two arguments of an old operation
were marginally interesting. They helped pin down the true nature of what
kind of argument the operation should be considered as taking.
For example, Union(x,y)=Union(y,x), so Union can take an unordered collection
of sets as its argument, and form their union.
Similarly, we see that Insert(x,y) is in general quite different from Insert(y,x).
When AM tries to see what invariants exist for this operation, it can notice only
that
the trivial constraint x=y is sufficient to cause the order of arguments not to
matter. If it had the concept of the LISP function "COUNT", which counts up all the
storage space used, or "FLATTEN", which removes all parentheses from a list structure,
then AM would notice that the COUNT's of both forms of Inserting were equal in number,
and that their FLATTEN's were equal sets of elements.
Looking for invariants is one favorite pastime of AM. In general, two operations
f and g will not coincide. AM wants to find a unifying operation U, such that
U(f(x))=U(g(x)); or, AM tries to find a U such that
f(U(x))=g(U(x)). This is of course the idea mathematicians normally refer to as
homomorphism.
AM calls this process Canonizing. Canonizing the two orders of Insert
(x into y, and y into x) would hopefully find the operation U=FLATTEN or
U=COUNT. Canonizing Same-length will cause the operation of Length to be synthesized.
Canonizing the notion of angles-equal-in-measure were the operations we normally
call rigid motions in the plane.
.COMMENT Numbers;
Let's pick the main thread of development again, before we lose it entirely.
Earlier, the operation "Same-length" was synthesized, as
a generalized form of the predicate which told when two structures were equal.
Same-length(x,y) is True iff x and y are two list structures which have
the same length (i.e., the same number of elements).
This new predicate was examined by AM, and sure enough it let many more
pairs of random objects return True than Equality did, yet it didn't let too
high a percentage through: just about 10%. This made AM want to find an
invariant, a canonizing function f, which put any given list structure x into
a standard form f(x), satisfying:
⊗6Same-length(x,y) iff Equal(f(x),f(y))⊗*
That is, x and y would have the same length precisely when the standard
forms of x and y were identically equal to each other.
AM had to synthesize this function f, step by step. First it performed
some experiments, and found that Same-length didn't care what the
type of its arguments were. If a certain Set S did/didn't satisfy
Same-length(R,S), then the same result would obtain if S were replaced
by Viewing S as a list, or as a bag, or as an oset. Thus the standard form
of a structure could be fixed as one specific type. But which should it
be (bag, set, list, oset)? To find out, AM ran two more experiments.
The first experiment was to see whether Same-length(R,S) was affected when
the order of elements inside R were changed. This turned out to be negative.
So R might as well be an unordered structure: bag or set.
The next experiment had AM decide whether or not multple elements inside
R would affect the value of Same-length(R,S). This turned out positive,
so multiple elements had to be taken into account. The canonical type
of argument was thus either bag or list. Together, the two experiments
indicated that the type had to be Bag. So the canonizing function f would
first convert any argument R to a bag.
A note tacked onto the Same-length concept's definition said that this
concept didn't look at the Car's or value-cells of its arguments.
That would mean that they should all be replaced by some fixed value, like T.
This checked out experimentally. So f should replace each element in the
structure R by the constant T. The final operation f synthesized was:
⊗6f(R) = Replace-each-element-by-T ( Convert-to--bag (R) )⊗*.
This operation would convert {a, (b,c,{d},e,e), q} into (T,T,T).
The set of standard forms for bags was called Canonical-bags, and renamed
by the user as Numbers. The canonizing operation f was called Length,
by the user, since it converts any structure into a "number" which represents
the length of that structure:
⊗6Same-length(R,S) iff Equal(Length(R),Length(S))⊗*
AM now made explicit an important analogy: bags↔numbers, equal↔same-length,
bag-operations↔[those same operations, restricted to canonical-bags].
Several minutes were spent developing these restricted bag-operations.
The old operation of inserting a bag S into itself provided a cute way to
"add 1" to
any number.
The Bag-union operation union turned into what we call Addition:
⊗6Bag-union( (T T T) (T T) ) = (T T T T T)⊗* means "3+2=5", in unary.
.ONCE TURN ON "{}"
TIMES was discovered in four ways, as discussed previously in the thesis.
The intersection of two "numbers" is the operation we call MINIMUM:
⊗6Intersect((T T T) (T T T T)) = (T T T)⊗* just says "Minimum(3,4)=3".
AM likes to find inverses, and the inverse of these operations turned out
to be the ones we call subtraction, factoring, division, less-than, etc.
AM likes coalescing, and some important operations were created that way, too:
Add(x,x) is Doubling; Times(x,x) is Squaring; the inverses of those were
Halving and Square-rooting (both restricted to natural numbers).
AM worried about which numbers could be halved or square-rooted,
and this led to the creation of the concepts Even-numbers and Perfect-squares.
When asking when a number z can be the result of a multiplication involving x,
AM derived the notion of Divides; analogously, AM defined the relation which
meant that Add of x and something else could yield z. That relation is just
"⊗6≤⊗*", and was called LEQ by the user. AM noticed many simple properties of
inequalities.
AM likes composing and reversing args,
and thereby figured out that most arithmetic operations
like Add and Times take a ⊗4bag⊗* of numbers to work on.
TIMES-1- was, as we said, factoring: given n, find all possible bags of numbers
(>1) whose product yielded n.
The identity of Times ("1") was intentionally excluded,
since its presence in any quantity would not affect the result of Times.
AM soon asked itself about numbers with extreme or unusual factorings.
.ONCE TURN ON "{}"
Primes were found in this way, as was Goldbach's conjecture. The example in
chapter {[2]EXAM1} went into this in great detail.
A large number of spurious analogous concepts were created and studied, to no
avail. For example, AM asked itself about numbers which could ⊗4uniquely⊗*
represented as the sum of two primes. As another example, AM defined the
concept of Square-roots-of-primes, which of course was not a winner.
The unique factorization of any number into primes was perceived quite
naturally, but many seemingly elementary concepts were left undiscovered.
AM never defined gcd (the greatest common divisors) onits own; it was,
however, possible to guide it to discovering that concept.
The task-by-task trace in the next section closes with the restriction of
addition to primes; i.e., p+q=r for primes p,q,r. This situation only occurs
when p (say) is 2, and q,r form a prime pair.
That trace will of course delve into concepts not mentioned above, and
conversely AM happended to miss, onthat run, some of those mentioned in this
section.
Finally, both sections omit mention of several interesting acitivites
AM performed: maximally-divisibles and all the geometric concepts, for example.
The line must be drawn somewhere. The frustrated reader should
try AM himself, and watch its progress.
.ASSEC(A `Nice' Task-by-task Trace)
. EXAM2: ASECNUM ;
.BEGIN BNN←0; TURN ON "{}";
.AT "CX" ⊂ " because many examples have recently been found, but not yet checked" ⊃
.AT "FD" ⊂ "Focus of Attention" ⊃
.AT "TX" ⊂ " is related to the very interesting concept TIMES" ⊃;
.AT "FX" ⊂ " because none exist yet" ⊃
Now that we've discussed this development at a fairly high level,
let's list what AM did task by task. The lines below give a highly
compressed "trace" of AM's sequence of behavior. The tasks in the
"best run"$$ Actually, a couple "very good" runs have been appended,
but NOT spliced together to the benefit of AM. $ are listed in
order, and numbered. For each, I have condensed AM's printout,
usually retaining some of the reasons AM had for atempting the task,
the methods AM used, the final outcome, and occasionally a bit of
commentary (in italics). The task numbers below correspond to the
numbering used in Section {[2]RESULT}.{[3]SHORTASK}, starting on page
{[3]SHORTASKP}.
.TRAT: PAGE;
.TRATS: SSECNUM;
:: Fill in examples of Compose: because Compose is highly-rated and
no examples of Compose are known yet. Several heuristics relevant,
but none succeeded. One of them, heuristic rule number {[3]RUNOP},
failed because no operations could be found which had examples. Also
important at this moment was heuristic rule number {[3]HAVEX}; see
Appendix {[2]ALLHEU}.
:: Fill in examples of Set-union: because Set-union is highly-rated,
and no examples of Set-union are known yet, and if some examples had
been known earlier then AM would have been able to Fill in examples
of Compose. Several heuristics relevant, but again none succeeded.
:: Fill in examples of Sets: because Sets is highly-rated, and no
examples of Sets are known yet, and if some examples had been known
earlier then AM would have been able to Fill in example of Set-union,
and AM was recently working on Domain(Set-union), and AM was recently
working on Range(Set-union). Several heuristic rules are relevant.
After rule {[3]INDEF} succeeded, so could many other techniques
(e.g., rule {[3]INVDEF}). In fact, it was so easy for AM to crank
out one example of a set after another, that rule {[3]SPEASY}
triggered.
:: Fill in specializations of Sets: because it was very easy to find
examples of Sets, and no specializations of Sets exist yet, and FD.
Many ways of creating new concepts, new specialized forms of Sets,
were relevant. AM created INT-Sets, defined as "λ (S) S is a set, and
all pairs of members of S satisfy the rare predicate P". AM also
created BI-Sets, defined as " λ (S) S=α{α}, or else both CAR(S) and
CDR(S) are BI-Sets." ⊗4The former specialization will lead to
Singletons, the latter deals with nests of braces (sets with no
atomic elements).⊗*$$ Recall that ⊗4italics⊗* signify the author's
comments, and contain information which AM -- and probably the user
as well -- could not have known at the time. $
:: Fill in examples of INT-Sets: because any such item will
automatically be an interesting example of a Set, and INT-Sets was
just created, and no examples of it are known yet. Very slowly, 6
examples were found via inference, and then 7 more were produced
quickly via more brutish methods. After eliminating duplicates, only
3 remain: α{α}, α{Aα}, and α{Bα}. In each case, the predicate P was
"Equal", and the worth of the concept Equal was raised slightly.
:: Check all examples of INT-Sets: because many unchecked examples
are present there, and FD. All three examples were confirmed. No
surprises were encountered. One of the three INT-Sets turned out to
be an Empty-structure, but no conjecture was actually formulated at
this time.
.RAISENIL←BNN;
:: Check all examples of Sets: because many were recently found and
never checked, and the previous task dealt with a specialization of
the Sets concept. One small modification had to be made to one of
the sets (namely, α{b,a,bα}→α{a,bα}). Based on empirical evidence,
AM hypothesizes that Sets may really be no more specialized than
Unordered-strucs. AM will reserve judgment until after it has tried
to find examples of Bags. (See heuristic rule {[3]RESERVE}, page
{[3]RESERVEP}.) Similarly, AM considers the possibility that all
Non-multiple-elements-strucs are really Sets as well. Before relying
on this flimsy conjecture, AM must first look for examples of Osets,
and see if ⊗4they⊗* are really also Sets.
:: Fill in examples of Bags: because no examples of Bags exist yet,
and to help settle the question about all unordered structures being
sets. 10 examples found. None are sets.
:: Fill in specializations of Bags: because it was very easy to find
examples of Bags, and no specializations of Bags are known about yet,
and FD. Many ways of creating new concepts, new specialized forms of
Bags, were relevant. AM created INT-Bags, defined as "λ (S) S is a
Bag, and all pairs of members of S satisfy the rare predicate P". AM
also created BI-Bags, defined as " λ (S) S=(), or else both CAR(S)
and CDR(S) are BI-Bags."
:: Fill in examples of Osets: because none exist yet, and to help
settle the question about all nonmult-strucs being sets. 13 distinct
examples found. None are sets.
:: Check examples of Osets: because many unchecked examples of Osets
exist on Osets.Exs, and FD. All confirmed. The prioirty rating of
this task is not high enough to inspire the creation of any new
concepts. One weak conjecture made: all ordered structures are Osets.
Will settle this by:
:: Fill in examples of Lists: because none exist yet, and to help
settle the question about all ord-strucs being osets. 29 examples
found. None are osets.
:: Check examples of Lists: because many unchecked examples of Lists
exist, and FD. All confirmed. Nothing special noted or motivated.
:: Fill in examples of All-but-first: because no such examples exist
yet, and AM was just working on Domain(All-but-first), and AM was
recently working on Domain(All-but-first). ⊗4The similarity of the
last two reasons escaped AM, and points up one of its flaws. AM is
swayed by the presence of a slightly-different reason just as much as
by a very-different supporting reason. There is no processing done on
the reasons.⊗* Choosing this task represents a radical shift of
attention for AM. 32 examples found, mostly by applying All-but-first
to the examples of Lists and Osets already known.
:: Fill in examples of All-but-last: because none exist yet, and AM
was recently working on Domain(All-but-last). Another
poorly-motivated task. ⊗4Luckily for AM, the user erroneously
believes that this task is also chosen to be symmetric with the last
task.⊗* 45 examples found.
.SELECT 1
:: Fill in specializations of All-but-last: because it's so easy to
find examples of it, and no specializations exist yet, and FD. The
syntactic methods AM can bring to bear are not enough to produce any
meaningful new concepts, and this task Fails. ⊗4Failure of a task
causes `FD' to go away for one cycle.⊗*
:: Fill in examples of List-union: because none exist yet. Another
wild shift of attention. 3 examples derived by symbolic manipulation
of the definition facet of this concept, then 22 more derived using
less inferential techniques (some were garnered by running
List-union.Alg itself on the early examples!).
:: Fill in examples of Proj1: FX. 26 found.
:: Check examples of All-but-first: because many were recently found
but not yet confirmed. All check out. This task has no repercussions
(new concepts, tasks, etc.).
:: Check examples of All-but-last: because many unchecked examples
exist on the Examples facet of All-but-last. All confirmed, with no
repercussions. ⊗4If the initial Worth values of All-but-first and
All-but-last are set high enough, AM defines a new concept at this
point, a new kind of ordered structure: λ (S) All-but-first(S) =
All-but-last(S). In fact, the only kind of Osets included herein are
those which are singletons or empty. Among lists, it also includes
those which contain just one kind of element, those which are
palindromic, etc.⊗*
:: Fill in examples of Proj2: because none exist yet. 26 found. AM
will typically quit looking for examples if (i) the time allocated
runs out, or (ii) the space allocated is used up, or (iii) 26
examples are found, or (iv) 151 attempts to find examples fail. ⊗4The
cosmic significance of 151 has rarely been recognized in print.
Perhaps 151 is more comic than cosmic. Seriously, these numbers must
be changed by almost an order of magnitude before any gross change in
AM's behavior is noticed.⊗*
:: Fill in examples of Empty-structures: FX, and the Worth of this
concept was increased recently (during task {RAISENIL}). Just by
looking at the examples of Structures (i.e., using heuristic rule
number {[3]LOOKGEX}), AM is able to get four empty ones: α{α}, [],
<>, (); i.e., the empty set, oset, list, and bag. Although some of
these are rederived in other ways, there are no other examples ever
found. This paucity triggers a rule which suggests this task:
:: Fill in generalizations of Empty-structures: because it was very
hard -- but not impossible -- to find examples of that concept, and
FD. AM examines the definitions of Empty-structure, but can't find
any recognizable syntactic pattern it knows about. It does find
⊗3(NOT (SOME-MEMBER S))⊗*, and tries to replace ⊗3SOME-MEMBER⊗* by a
specialization of same, but none is known to exist. ⊗4If the user
initially tells AM that First-member and Last-member are
specializations of Some-member, then AM ↓_can_↓ generalize
Empty-structures. In fact, it then comes up with what is equivalent
to `Empty-struc ∪ Unord-struc'. In the current setup, however, this
task fails. If AM had a better understanding of
constructive/destructive operations, it might have defined
Structures-with-empty-CARs, or perhaps Structures-with-empty-CDRs
(i.e., Singletons again).⊗*
:: Check examples of List-union: because many were recently added but
not yet confirmed. This shows the mechanical patience that a `stack'
gives you. Since no higher-priority task has been suggested, AM
attends to a task which has been on there for a while.
:: Check examples of Bags: because many examples and a couple
specializations exist. A few small modifications had to be made
(e.g., (A C B A) α→ (A A B C)).
:: Fill in examples of Bag-union: because none exist yet, and AM was
just working on Domain(Bag-union), and AM was just working on
Range(Bag-union). Note the influence of heuristic rule numer
{[3]FROB1}. This task proceeded smoothly, with 26 examples being
generated.
:: Check examples of Proj2: because several were recently found and
not yet checked. All confirmed, with no new suggestions generated.
:: Fill in examples of Set-union: because none exist yet. Again we
see rule {[3]FROB1} in action. 26 examples found.
:: Check examples of Set-union: CX, and FD (AM just worked on
Set-union). A few patches had to be made. Often, Set-union(x,y) was
equal to one of its arguments. AM therefore defined a new predicate
Eq-union(x,y) which is True iff Set-union(x,y)=x. The user later
renamed this "Superset-of", since this is the relationship of
containment. In typical math texts, containment is introduced long
before union, and then this is a theorem: "A⊃B iff A∪B=A". But AM
used "∪" to form the ⊗4definition⊗* of "⊃".
:: Fill in examples of Bag-insert: because none exist yet, and AM was
recently working on Domain(Bag-insert), and AM was recently working
on Range(Bag-insert). ⊗4A saddeningly stupid move for AM. It should
have rated Superset higher, and continued working on it.⊗* AM has no
trouble finding many examples of insertions into bags.
:: Check examples of Bag-insert: CX, and AM just worked on
Bag-insert. All examples were confirmed. This operation always
seemed to result in Nonempty bags. The Domain/range facet was so
amended. The value is never either of its arguments, but there is no
concrete action AM must take in such a situation, no compact way of
noting that anti-relationship (short of creating a full-blown
conjecture). Restricted to singletons, Bag-insert never produces a
singleton or an empty bag. AM defines the concept of a bag gotten by
doing a Bag-insert on a singleton; i.e., the notion of a doubleton
bag.
:: Fill in examples of Bag-intersect: FX, and AM was recently working
on Domain(Bag-intersect), and AM was recently working on
Range(Bag-intersect). 26 found without trouble.
:: Fill in examples of Set-insert: FX. Just another data-gathering
task, building up AM's store of embpirical results.
:: Check examples of Set-insert: CX, and AM just worked on
Set-insert. Applying this operation always seems to result in
Nonempty sets. Domain/range so amended. The value is sometimes just
one of its arguments. AM defines what will eventually be called
Set-membership in this way: λ (x,S) Set-insert(x,S)=S. This is not
the only important result here. AM notices that Set-insert(x,S) is
always related to S by Superset-of. That is,
Superset-of(Set-insert(x,S), S) [for any x]. So conjectured. This
doesn't actually suggest anything marvelous for AM to do next,
however. Incidentally, during this task AM also defines the concept
of doubleton set.
:: Fill in examples of Bag-delete: FX. ⊗4Note that `working on bags'
is so long past that it is no longer given as a reason for this
task.⊗* Able to generate two examples by manipulating definitions
supplied with Bag-delete, then a couple dozen more were generated.
Some were generated by asking for examples of the domain (i.e.,
examples of bags) and then running Bag-delete.Alg on them.
:: Fill in examples of Bag-difference: FX. 26 found. ⊗4This is a
good vantage point to look back and ahead, and notice that while the
surrounding tasks are all reasonable data-gathering forays, the order
in which they're performed is unimportant. Later on, AM will follow
threads of discoveries, and the order of tasks then will appear very
important.⊗*
:: Check examples of Bag-intersect: CX. So many examples were found
that AM will entertain the idea of creating a specialized new
concept. Since the intersection of two randomly-chosen bags was
often empty, AM defined the concept of disjoint bags: λ (x,y)
Bag-intersect(x,y)=().
:: Check examples of Set-intersect: CX. 3 small modifications had to
be made. This time, AM noticed that the intersection of two sets was
often empty, and defined the Disjoint-sets concept. AM also noted
that x∩y was often one of those very same arguments, so it defined
the relation which is eventually renamed Subset: λ (x,y)
Set-intersect(x,y)=x. At the moment, AM didn't realize that there
was any connection between Subset and Superset. This tie came much,
much later (Task number {[3]SUBTIE} (qv.) in this run).
:: Fill in examples of List-intersect: FX, and the interest of
Intersect (the general concept of which this is a specialization) has
recently been increased a few times. 26 found without incident.
.ONCE PREFACE 1;
⊗6AM is bored⊗1$$ Of course "bored" is just what AM types out. It
reflects the low value of the top task on the agenda, and the meager
results obtained recently. Please forgive the anthropomorphism; it is
meant only to be "cute", not misleading. AM has no internal model
which could be called its "emotional state", as, e.g., PARRY [Colby 73]
claims. $⊗6! Will look at Suggest-type heuristics for new things to
do.⊗1
.ONCE PREFACE 1; INDENT 4,4,4;
⊗4If "Equality" is excised at this moment, AM continues the preceding
line of inquiry for a while, and then defines Singleton-osets, as
Osets all of whose members are equal to each other. AM notices that
All-but-first and All-but-last, restricted to Singleton-osets, always
yield the same result, namely the empty oset. AM then "generalizes"
this into the concept which is all the osets for which
All-but-first(x)=All-but-last(x). AM then turns to relationships
involving Subset and Superset, followed by a flurry of compositions
and coalescings, and their investigation. But Equality ↓_is_↓
present, so AM goes off on another course of exploration.⊗*
.ONCE PREFACE 1;
:: Fill in examples of Equal: because Equal has recently become more
interesting, and there are no examples known yet. Equal became more
interesting gradually, as INT-Sets were define and liked, Eq-union
defined and liked, etc. Once chosen, this task does not go smoothly.
By inference methods, only a couple examples were derived. Later,
when heuristic rule number {[3]RUNOP} was run, 151 failures were
encountered and only 2 successes. This is so small a success rate
that a heuristic rule strenuously proposed this next task, with a
high enough rating to be chosen right away:
:: Fill in generalizations of Equal: because Equal is apparently
quite rarely satisfied, and there are no entries yet on Equal.Genl.
Removing one of the two conjoined recursive calls in the recursive
definition given for Equal caused the creation of Equal-except-CARs
and Equal-except-CDRs. ⊗4The first predicate tests whether x and y
have the same number of elements; the second tests whether x and y
have the same number of leading left parens and the same first atom
after that final leading left parenthesis. As Knuth pointed out,
both of these concepts are valid ways of defining "numbers": one
counts the number of elements, the other counts the number of leading
left parentheses. But most structures which AM knows about are just
simple 1-level affairs. Therefore, Equal-except-CDRs was almost
always the same as "CAR(x)=CAR(y)". So AM never realized this
duality. If it had pushed BI-Sets and BI-Bags further, it might
have.⊗* Another concept created here is far more bizarre. Instead of
eliminating one of the two conjoined recursive calls, AM replaced the
AND with an OR. The new concept Genl-Eq3 was defined: `λ(x,y) if x or
y are non-lists, then EQ(x,y), else [Genl-Eq3(CAR(x),CAR(y)) ↓_OR_↓
Genl-Eq3(CDR(x),CDR(y)].' This is true if x and y have the same
length, or if the j↑t↑h element of each is the same (for any j), or
if the j↑th element of each has the same length (>0), or if the
i⊗Ath⊗* element of the j⊗Ath⊗* element of each is the same or has the
same length (for any i,j), or...
:: Fill in examples of Equal-except-CARs: because this is a new
generalization of Equal which must be examined, and because no
examples exist yet. Only 10 examples were found before the time
quantum was exhausted, but this was still many more than were found
for Equal before. The user now renamed this concept "Same-size".
⊗4A whirlwind of discovery is about to sweep the other two
generalizations of Equal out of the top spot on AM's agenda for quite
a while. If AM accidentally picked another of these to work on before
Same-size, only a small amount of time would have been spent before
moving on. For example, AM is unable to perform
Canonize.Algs(Genl-Eq3,Equal), so that would be a dead-end right
there.⊗*
:: Apply an Algorithm for Canonize to the args Same-size and Equal:
because a heuristic rule explicitly suggested that, and there are no
known examples of Canonize yet, and AM was just working on Same-size,
and AM was recently working on Equal, and Same-size was recently
created, and Same-size was just renamed by the user. AM performs
several experiments, and eventually synthesizes this canonizing
function: f(S) takes a structure S, converts it to a Bag, and
replaces each element by "T". This function is later renamed "Size"
by the user. AM also defines the set of canonical structures: bags
of T's. The user renames Bags-of-T's as "Numbers".
:: Restrict the Domain/range facet of Bag-union: because Bags-of-T's
(called Numbers now) is a new, interesting specialization of Bags,
and a heuristic rule explicitly suggested this, and FD, and many
examples of Bag-union exist. A new operation is defined,
Number-union, with domain/range entry <Number Number α→ Bag>. This
task used less than one cpu second.
:: Fill in examples of Number-union: because it is
recently-interesting, and it was just created, and AM was recently
working on Domain(Number-union). Several examples are found. ⊗4At
this point, the author turned on a tricky LISP printing function,
which converted each bag of T's to base-10 exponential notation
before allowing it to be typed out.⊗*
:: Check the domain/range of Number-union: because a heuristic rule
explicitly suggested that the range might really be "Number", and AM
was just working on Number-union, and AM was recently working on
Domain(Number-union) [i.e., working on `Numbers']. In fact, what the
heuristic rule suggested purely from symmetry desires turned out
empirically to be true: the value of Number-union(x,y) ⊗4did⊗* always
appear to be a Number (a bag of all T's). The result of this was to
amend the Domain/range facet of Number-union. Although AM regards
this uniformity as very interesting, it has no direct suggestion for
what to do next. The user renames this operation "Add2", since it
takes precisely 2 arguments (unary numbers) and adds them.
:: Restrict the domain/range of Bag-intersect: to Numbers, ⊗4for
similar reasons as above⊗*. After again noticing that the
intersection of 2 numbers always seems to be a number, this leads to
the operation which the user renames "Minimum". ⊗4Since the pattern
of tasks is Restrict → Fill in examples → Check examples, there is
not much point in listing all three tasks for all of these simple
restrictions. Each one will only get a single number in this listing.
Also, since the reasons for these restrictings are pretty much the
same, they won't be repeated for each task below.⊗*
.SELECT 1;
:: Restrict the domain/range of Bag-delete: to Numbers. The user
renames this operation "SUB1", although this is not quite accurate.
If x is not `T', then applying this operation to x and N (for some
number N represented as a bag of T's) will not alter N at all. AM
does not possess the reasoning abilities needed to anticipate this.
:: Restrict the domain/range of Bag-insert: to Numbers. The
domain/range entry is changed to <Anything Number α→ Bag>. Renamed
Number-insert. Although this new operation will in fact change a
number N, it may not necessarily change it into a number. The last
operation, SUB1, would always produce a number, though it might
sometimes fail to change N at all. Here is the sad discovery of that
asymmetry about Number-insert:
:: Check the domain/range of Number-insert: because a heuristic rule
explicitly suggested that the range might really be "Number". In
fact, its quickly seen ⊗4not⊗* to be. This operation is lowered in
worth, and never touched again. Due to AM's imperfect heuristics, the
worth of SUB1 is slightly higher still than this concept's.
:: Restrict the domain/range of Bag-difference: to Numbers. After
again noticing that the difference of 2 numbers always seems to be a
number, this leads to the operation which the user renames
"Subtract".
:: Fill in examples of Subtract: FX, and Subtract was just created.
Many examples are found. If a larger number is "subtracted" from a
smaller, the result is zero, according to this operation. Thus about
half of these examples have the value zero (empty bag). AM
explicitly defines the set of ordered pairs of numbers having zero
difference. It turns out that (in modern terminology) <x,y> is in
this new set iff x is less than or equal to y. So the user renames
this relation "LEQ".
:: Fill in examples of LEQ: FX, and LEQ was just created. 26 examples
found. When random numbers are chosen, the success rate is (as we
wise observors know) a little over 50%. This is very nice and AM's
estimate of the worth of LEQ rises.
:: Check examples of LEQ: CX, and the worth of LEQ has recently
risen. All confirmed. ⊗4Unfortunately, AM has derived Subset but not
Subbag, else it might have noticed that (for all numbers x and y,
represented as bags of T's) x⊗6≤⊗4y iff Subbag(x,y). Then AM could
simply observe that LEQ was just Subbag restricted to Numbers.
Looked at another way, AM has here discovered a restricted version of
the concept Subbag.⊗1
:: Apply algorithm of Coalesce to LEQ: because LEQ is an interesting
operation, recently created, many examples already exist for it, AM
just worked on LEQ, LEQ takes two of the same argument (Numbers), and
no examples of Coalesce are known yet. The new predicate is defined
as λ(x) x⊗6≤⊗*x. But this is Always-True, so AM conjectures that each
number is LEQ itself, and forgets the new coalesced version of LEQ.
:: Fill in examples of Add2: FX, and Add2 was recently created, and
the analogous operation (Bag-union) is interesting. 26 are found.
Nothing unusual here.
:: Fill in examples of Parallel-join2: FX. Included is
Parallel-join2(Bags,Bags,Proj2) (initially called MJ2-BBP2), which
turns out to be multiplication of two numbers and is renamed "TIMES2"
by the user. Also included is
Parallel-join2(Structures,Structures,Proj1), which is a generalized
kind of Union operation (renamed "G-Union" by the user). Many losers
are also created, however, like
Parallel-join2(Bags,Sets,Set-difference)).
.Z7←BNN+12;
:: :- ⊗6{Z7}.⊗* Fill in and check examples of the operations just
createad. Nothing out of the ordinary is done here, just the routine
legwork of gathering empirical data for later use. No startling
conjectures made.
.BNN←Z7;
:: Fill in examples of Coalesce: FX. One shining example is
Self-compose, which takes any operation F (whose range is also a
domain component) and forms F-o-F. Another example is Self-Insert,
which takes a structure S and inserts S into S. Also created were:
Self-Delete, Self-Add, Self-Times, Self-Union, etc. A different kind
of coalescing was done for Parallel-replace2, Parallel-join2, and
Repeat2; the two structural arguments (the first and second arguments
for each) were merged, creating three new operations: Coa-repeat2,
Coa-join2, Coa-replace2. Coa-replace2, for example, takes a single
structure S and an operation F, and replaces each member x of S by
the value F(x,S).
:: Fill in examples of Self-Delete: FX, and Self-delete was just
created. Many examples are found quite easily, of course, except:
:: Check examples of Self-Delete: CX. Since trying to delete S from S
will never work, the value of Delete(S,S) is just S all the time.
Self-delete is the same as the identity operation. AM is able to
discover this and state it as a conjecture, obviating the need for
bothering with this concept ever again.
:: Fill in examples of Self-Member: FX, and Self-member was recently
created. Only negative instances are found.
:: Check examples of Self-Member: CX. This predicate is
Always-False, empirically. Replace by a conjec: Self-Member is the
same as the predicate Always-False; Member(S,S)=False for any S.
Also, an extra algorithm entry is added to Member.Alg: ⊗6Once Early
Quick: λ (x,y) if x=y then False.⊗* Also, a new task is proposed, to
generalize Self-Member. This never quite rises to the top of
theagenda, so it is never attempted.
:: Fill in examples of Self-Add: FX. Many found. User renames this
"Doubling", after he observes the many examples which are produced.
:: Check examples of Coalesce: CX. All were confirmed. Some were
already proving to be interesting, so the value of Coalesce was
raised.
:: Check examples of Add2: CX. All were confirmed. Somewhat
disappointingly, AM didn't notice anything special about Add2 at the
time.
:: Fill in examples of Self-Times: FX, and AM recently worked on
Isa(Self-Times) [namely, worked on Coalesce]. Renamed "Squaring" by
the user. 20 examples found before quitting due to lack of alotted
space.
:: Fill in examples of Self-Compose: FX. Created Add2-o-Add2 (two
versions: Add21 which is λ (x,y,z) (x+y)+z, and Add22 which is
x+(y+z)). Similarly, two versions of TIMES2-o-TIMES2, called TIMES21
and TIMES22. Also, two versions of Compose-o-Compose. Some losers
were defined as well, like Member(Member(x,y),z) and
Parallel-join2(S,R,Parallel-join2(P,Q,F)) -- the latter of which
accepts as arguments four kinds of structures and a function name.
Many minimally-acceptable concepts were created: Coalesce-o-Coalesce,
Squaring-o-Squaring, Doubling-o-Doubling, etc.
:: Fill in examples of Add21: FX, and Add21 was just created. This
operation is defined as λ (x,y,z) (x+y)+z. It is easy to find
examples.
:: Fill in examples of Add22: FX, and Add22 was recently created.
This operation is defined as λ (x,y,z) x+(y+z). It is easy to find
examples. Most of these examples are gotten from the "cousin"
concept Add21.
:: Check examples of Squaring: CX. All confirmed. ⊗4It is
unfortunate that this task intruded into AM's line of development.⊗*
:: Check examples of Add22: CX. During this process, AM notices that
Add21 and Add22 seem to be equivalent. Before conjecturing this,
though, AM will do this next task:
:: Check examples of Add21: CX, and this task was specifcally
suggested while AM was trying to check examples of Add21. After
checking these examples, Add21 and Add22 still appear equivalent. AM
conjectures this and merges the two operations. One consequence is
the boosting of the worth of the new, combined operation. The most
important aftereffect of this is that AM now knows that the "proper"
argument for a generalized kind of addition will be a Bag, not a
List, of numbers. This new kind of addition is called Add, to
distinguish it from Add2. Add2 takes a pair of numbers and adds
them, but Add accepts a ⊗4bag⊗* of numbers and forms their sum.
:: Apply algorithm for Invert to argument `Add': because Add is
interesting, recently worked on, and has never been inverted, and
there are no examples yet for Invert, and the worth of Add has
recently risen, and Add was just created. ⊗4By looking at those
reasons, we see why some semantic processing should be available.
There is tremendous overlap there, and the task is not really
supported by as many reasons as AM thinks.⊗* AM defines Inv-add(x)
(also called Add-1-) as the set of all bags of numbers (>0) whose sum
is x.
:: Fill in examples of TIMES21: FX. Defined as (x⊗8#⊗*y)⊗8#⊗*z. Many
are found.
:: Fill in examples of TIMES22: FX. Defined as x⊗8#⊗*(y⊗8#⊗*z). Many
are found.
:: Check examples of TIMES22: CX. As with Add, earlier, TIMES21 and
TIMES22 now appear equivalent. Before saying this, AM must do this
task:
:: Check examples of TIMES21: CX, and this task was specifically
suggested while AM was trying to check examples of TIMES22. After
checking these examples, TIMES21 and TIMES22 still appear equivalent.
AM conjectures this and merges the two operations. One consequence is
the boosting of the worth of the new, combined operation. The most
important aftereffect of this is that AM now knows that the "proper"
argument for a generalized kind of product will be a Bag, not a List,
of numbers. This new kind of multiplication is called TIMES, to
distinguish it from TIMES2. Notice the same property held true for
Add2, earlier. AM sets up an analogy between TIMES and ADD, because
of this common fact. ⊗4The analogy itself is close to what
mathematicians call the concept of Semigroups.⊗*
:: Apply algorithm for Invert to argument `TIMES': because TIMES
contains a new, promising analogy, and the analog of TIMES has been
inverted, and TIMES has never been inverted, and the worth of TIMES
has recently risen, and TIMES was just created. AM defines
Inv-TIMES(x) (also called TIMES-1-) as the set of all bags of numbers
(>1) whose product is x. AM noted that TIMES-1- should probably be
analogic to Add-1-.
:: Fill in examples of Parallel-replace2: FX. ⊗4I could kick AM for
doing this now!! The priority rating of this task happened to place
it above all the others, including those with extra bonusses because
of focus of attention. This task is merely diverting, not harmful in
any lasting sense, but it does degrade the apparent level of
purposefulenss of the system.⊗* Several examples of Parallel-replace2
are found. Included are Parallel-replace2(Bags,Bags,Proj2) (called
MR2-BBP2), and many losers. MR2-BBP2(S1,S2) replaces each element in
S1 by a full copy of the whole of S2. ⊗4This is the way that Skemp
suggests developing the notion of multiplication -- and in fact AM
will (in task {[3]DMULTT}) derives an operation which is equivalent
to TIMES2 just by unioning the results of this operation. In task
{[3]DMULT2} AM realizes that this is in fact just multiplication, and
merges those two operations, concurrently boosting the worth of that
combined concept greatly.⊗*
.Z7←BNN+16;
:: :- ⊗6{Z7}.⊗* Fill in and check examples of the operations just
created. ⊗4Nothing really worth our time (or AM's). Sigh.⊗*
.BNN←Z7;
:: Fill in examples of Compose: FX. It is very easy to create new
compositions -- most of them losers. Some of the concepts produced
(e.g., Size-o-Add-1-) were valuable but were lost amid the mass of
losers (e.g., Insert-o-Equal). Because of this flood of
poorly-motivated new concepts, a heuristic triggers which has AM
create a new specialization of Compose, called Int-Compose, by
conjoining onto Compose.Defn a few of the features from
Compose.Interest. The Worths of the new compositions just created
are all lowered, so that the (future) examples of Int-Compose will
predominate. ⊗4The task first considered in TASK 1 has finally
bubbled back up to the top of the agenda, and has proved to be quite
worthwhile.⊗*
.SELECT 1;
:: Fill in examples of Int-Compose: FX, and Int-Compose was just
created, and any example of Int-Compose is automatically an
interesting example of Compose, and the worth of Int-Compose is very
high. The two chosen operations G,H must be such that
ran(H)⊗6ε⊗*dom(G), and ran(G)⊗6ε⊗*dom(H); both G and H must be
interesting or at least newly-created. Well, two operations recently
dealt with are G-Union and MR2-BBP2. Since the range of MR2-BBP2 is
`Bags of Bags', it is ⊗4precisely⊗* equal to the domain of the
newly-synthesized operation G-Union. So one composition considered
is G-Union-o-MR2-BBP2. This is an alternate derivation of the
operation of multiplication. Also included are: TIMES-o-Squaring,
Coalesce-o-Compose, Insert-o-Delete, Delete-o-Insert, Add2-o-Times2,
etc. Although most of these operations were never investigated very
much, they are much better than the random compositions produced
during the previous task. This seems clear even to AM, even before
studying them very much.
.DMULTT: BNN;
.Z7←BNN+17;
:: :- ⊗6{Z7}.⊗* Fill in and check examples of the compositions just
createad. Nothing of great interest until...:
.BNN←Z7;
:: Check examples of G-Union-o-MR2-BBP2: ⊗1CX. AM discovers that
this operation is equivalent to MJ2-BBP2 (i.e., TIMES2). Since they
arose in very different ways, the worth of the new, merged concept
module is greatly increased, as is that of the more general operation
TIMES.
.DMULT2: BNN;
:: Fill in examples of Coa-repeat2: FX. 26 operations synthesized.
Foremost among them was Coa-repeat2(Bags-of-Numbers,Add2), which
turned out to be yet another derivation of multiplication! Also
produced was Coa-repeat2(Bags-of-Numbers,Times) -- a definition of
exponentiaion. Others included Coa-repeat2(Structures,Proj1), which
turns out to be the same as First-element-of, i.e., CAR, and
Coa-repeat2(Structures,Proj2), which turns out to be Last-element-of.
:: Check the examples of Coa-repeat2: CX, and FD. All confimed.
:: Apply algorithms for Invert to `Doubling': Doubling is
interesting, and it has never been inverted. The result is called
"Halving" by the user. AM decided to isolate the domain of Halving
(the range of Doubling). Such numbers are renamed by the user as
"Evens". ⊗4Although pleased with the result of this task, it was
somewhat jarring in the context of the preceding development.⊗*
:: Fill in examples of Self-Insert: FX. ⊗4AM has apparently lost the
"thread" of a development and is wandering around, taking care of
only moderately promising tasks.⊗* Many examples of this operation
are found.
.SELECT 1
:: Check examples of Self-Insert: CX, and FD. Nothing special found.
The result is never the same as the argument.
:: Check examples of Coa-repeat2-Add2: CX. Confirmed. AM noticed it's
the same as TIMES. Boost the worth of TIMES even higher, far above
that of any other concept. AM will stay interested in TIMES for most
of the future of this run.
:: Apply algorithm for Invert to argument `Squaring': Squaring is
interesting, has never been inverted, TX, is related to the very
interesting concept Coalesce, is analogic to the already-inverted
concept Doubling. AM defines Inv-square(x) as the number$$ Actually:
the set of all numbers...$ whose square is x. Renamed by user as
"Square-root".
:: Fill in examples of Square-root: FX, and Square-root was just
created, and Square-root TX. AM spent quite a while on this task, and
only about 10 examples were found (discounting duplicates).
:: Fill in new algorithms for Square-root: because Square-root.Algs
are all too slow, and have been called on a great deal recently. ⊗4AM
has some zero↑t↑h order rules for improving algorithms, backed up by
a marvelous tactic: ask the user. In this case, AM asks the user for
a better algorithm, and he supplies one. Of course, the new
algorithm is completely opaque to AM. The user never tells AM how to
do something unless it had a (slow) way to do that thing already.⊗*
One fast new algorithm now exists.
:: Check examples of Square-root: CX, and FD. AM is plagued by the
frequency of numbers not having square-roots, so it isolates those
that do. It defined the set of numbers having a square-root, and this
concept was renamed "Perfect-squares" by the user.
:: Fill in examples of Coa-repeat2-Times: FX, and this concept TX.
⊗4A moderately rational thing to investigate.⊗* Examples are easily
found, but they take up a lot of space.
:: Check examples of Coa-repeat2-Times: CX, and FD. Nothing special
noticed, unfortunately (this is exponentiation, folks). ⊗4If the
user interrupts and tells AM that this is really interesting, AM soon
creates the specialization of it defined as Expon(x,2), and then AM
notices that this is just squaring. I.e., x↑2=x⊗*⊗8#⊗*⊗4x: the base
tie between exponentiation and multiplication. On its own, AM doesn't
rate Coa-repeat2-Times high enough to start this chain of
discoveries.⊗*
:: Fill in examples of Inv-TIMES: FX, and Inv-TIMES TX. Many found.
:: Fill in new algorithms for Inv-TIMES: because Inv-TIMES.Algs are
all too slow, and have been called on a great deal recently, and
TIMES-1- TX, and FD. AM asks the user, who supplies a decent
recursive algorithm for this function.
:: Check examples of Inv-TIMES: CX, and FD. This proceeds along, and
all are confirmed. A heuristic rule notices that the domain/range is
<Number → Sets-of-Bags-of-Numbers>; it searchs for an operation whose
Domain/range facet contains an entry (compatible with)
<Sets-of-Bags-of-Numbers → Number>, and fails; next it looks for an
operation whose dom/range is <Sets-of-Bags → Set or Bag>, and finds
that G-Union fills the bill. Therefore, the rule suggests the
following task (with a high rating):
:: Apply Compose algorithm to G-Union and Inv-TIMES: because the
three concepts involved are interesting, related to TIMES, and this
task was specifically suggested by the preceding one. The
composition is created, as specified in the task. This new operation
has domain/range <Number → Set-of-Numbers>, and is thus given a
higher rating than either of its constituents. It is renamed
"Divisors" by the user.
:: Fill in examples of Divisors: FX, and Divisors TX, and divisors
was just created. Many examples are found, but only after much
inefficient searching amid the set of all (known examples of)
numbers.
:: Fill in new algorithms for Divisors: because Divisors.Algs are all
too slow, and have been called on a great deal recently. AM asks the
user, who supplies a decent iterative algorithm for this function.
:: Fill in examples of Perfect-squares: FX, and Perfect-squares TX.
15 found, after which the space allocation was exhausted.
:: Fill in specializations of TIMES: because TIMES is very
interesting, has very few known specializations, and it was very easy
to find examples of TIMES. AM now allocates a huge chunk of cpu time
and space to this task. A few specializations of TIMES are gotten by
plugging in a distinguished value for one argument:
Times1(x)⊗6≡⊗*1⊗8#⊗*x, Times0(x)⊗6≡⊗*0⊗8#⊗*x, etc. Other new
operations are simply TIMES with its domain restricted to a bag of
special numbers: Times-sq has its domain a bag of perfect squares,
Times-ev takes only even arguments, etc. Others (inefficient to
compute) are TIMES with its range restricted: Times-to-evens requires
that the result be even, Times-to-sq for square results, etc.
:: Check examples of Divisors: CX, and Divisors TX. Often,
Divisors(x) is interesting (to AM) as a set; AM isolates the cases by
defining 0-Div, 1-Div, 2-Div, and 3-Div, the sets of numbers whose
Divisors value is the empty set, a singleton, a doubleton, and a
tripleton, respectively. AM will gradually partition the examples of
Divisors into these categories, as AM tries to fill in examples of
each kind of number.
.SELECT 1; ONCE INDENT 4,4,3; PREFACE 1;
⊗4This is the point where the example in Chapter {[2]EXAM1} begins,
and is also roughly the point where the unadulterated LISP trace
(Appendix {[2]TRACES}.{[3]UNADULT}) ends. Both this section and the
earlier condensed task-by-task trace, found in Chapter {[3]RESULT},
go further.⊗*
:: Fill in examples of 1-Div: FX, and 1-Div was just created, and TX.
Only one example found: "1". This causes the Worth of 1-Div to be
lowered.
:: Fill in examples of 0-Div: FX, and 0-Div was recently created, and
TX. None found. Lower the worth of this concept.
:: Fill in examples of 2-Div: FX, and this concept TX. About 19 are
found (out of about 170 attempts). This is a nice ratio, a nice
density within the natural numbers -- not too many nor too few to be
interesting. As a result, 2-Div.Worth is slightly raised.
:: Check examples of 2-Div: CX, and the worth of 2-div has just
increased, and FD. The existing examples were confirmed, but no
pattern noticed. ⊗4This was heart-stopping, since 2-Div is the notion
of prime numbers; here AM is tossing it off as
non-interest-catching!⊗*
:: Fill in examples of 3-Div: FX, and 3-Div TX. As with 2-Div, a nice
number of examples were found (albeit on the scarce side of nice).
:: Check examples of 3-Div: CX, and 3-Div TX., and FD. All
confirmed. All are perfect squares! Very unexpected (both by AM and
the user). AM greatly increased the worth of 3-Div. One suggestion,
due to the fact that 3-Div was now In-dom-of Square-root, was:
:: Restrict Square-root to numbers which are in 3-Div: Square-root is
interesting, 3-Div is very interesting, and the preceding task
specifically requested this action. AM calls the new concept Root3.
:: Fill in examples of Root3: FX, and Root3 was just created, and
Root3 is related to the very interesting concept 3-Div. Many
examples found. In fact, it was easy to take the square-root of each
known example of 3-Div.
:: Check examples of Root3: CX. All confirmed. Each result turned
out to be a 2-Div type of number. Very surprising. Conjecture: the
square-root of a number with 3 divisors is a number with 2 divisors.
AM raised the worths of all the concepts involved. At this point,
the user renamed 2-Divs as "Primes".
:: Restrict Squaring to Primes: Squaring is interesting, Primes is
recently interesting, and the preceding task specifically suggested
this action. AM calls the result Square2.
:: Fill in examples of Square2: FX, and Square2 was just created.
Many found.
:: Check the domain/range facet of Square2: it has been specifically
suggested that the range of Square2 may be 3-Div, and 3-Div is very
interesting, and Square2 is related to the interesting concept
Primes, and FD. As hoped for, all are 3-Divs. Conjecture: x is a
Primes iff its square is a 3-Div iff it is the square-root of a
3-Div.
:: Restrict Squaring to 3-Divs: Squaring is interesting, 3-Div is
interesting, and an earlier task specifically suggested this action.
The result is called Square3. ⊗4AM's past few successful tasks have
now incremented the Worths of certain activities above their true
value: AM will now be tied up with restricting Squaring and
Square-rooting to all the concepts involved. The net effect will be
to lower those inflated worth ratings, and to lower the user's -- and
the reader's -- opinion of AM.⊗*
.SELECT 1;
:: Restrict Square-rooting to Primes: Square-root is interesting,
Primes is interesting, and an earlier task specifically requestd this
action. Call the result Root2.
:: Fill in examples of Square3: FX, and Square3 is related to the
interesting concept 3-Div, and Square3 was recently created. Only 9
examples found before running out of space. By analogy, since
Divisors-of-o-Square2 was interesting, AM considers:
:: Compose Divisors-of and Square3: Analogic to tripletons, and
Divisors-of is interesting, and Square3 is interesting, and the
preceding task specifically suggested this action. AM calls the
result Div-Sq3.
:: Fill in examples of Div-Sq3: FX, and Div-Sq3 was just created. 9
examples found right away, by simply running Divisors-of.Algs on the
9 known examples of Square3.
:: Check examples of Div-Sq3: CX. All such examples are Same-size.
Although AM doesn't have the notion of `5-ness' explicitly, they each
have 5 members. A specialized hack heuristic observes the general
pattern: Divisors-o-Primes are all of the same size;
Divisors-o-Squaring-o-Primes are all of the same size;
Divisors-o-Squaring-o-Squaring-o-Primes are all of the same size; A
new conjecture is formulated and typed to the user:
Divisors-o-Repeat(Squaring)-o-Primes will all be the same size.
.ONCE SELECT 4; PREFACE 0; INDENT 4,4,3;
This expresses the fact that, for a given n, p↑[⊗72n⊗*] has the same
number of divisors for each prime p. AM was not able to figure out
that number of divisors (it is 2n+1). This would be a trivial
sequence extrapolation problem, but AM of course had no heuristics
for dealing with numbers, hence no sequence extrapolation techniques.
Deriving the concept of sequence extrapolation itself would have been
quite astounding, but never occurred. Discovering the concept of
inductive inference and studying it explicitly in isolation is quite
a sophisticated achievement -- that's what AI researchers spend much
of their time trying to accomplish. This is one time when AM was
much further from discovering a theorem than it appeared to the
casual observor.
.Z7←BNN+8;
:: :- ⊗6{Z7}.⊗* More confirmations and explorations of the above
conjecture. Gradually, all its ramifications lead to dead-ends (as
far as AM is concerned).
.BNN←Z7;
:: Fill in examples of Root2: FX, and Root2 is related to the
interesting concept Primes. But no examples at all are found. This
is not surprising, since very few primes are also perfect squares.
AM conjectures that there are none. Worth of Root2 is lowered.
:: Check examples of Inv-TIMES: CX. This is a break in the previous
smooth line of development. Inv-TIMES appears to always contain a
singleton bag; in fact, Inv-TIMES(x) always contains the singleton
bag (x). Another conjecture AM makes: Inv-TIMES(x) always contains a
bag of primes. This last hypothesis suggests the following two tasks:
:: Restrict the range of Inv-TIMES to bags of primes: because
Inv-TIMES is interesting, is related to the very interesting concept
TIMES, primes are more interesting than numbers at the moment, FD,
and the previous task specifically suggested this action. AM calls
the new result Prime-Times.
:: Restrict the range of Inv-TIMES to singletons: because Inv-TIMES
is interesting, is related to the very interesting concept TIMES,
singletons are more interesting than sets at the moment, a recent
task specifically suggested this action, and FD. AM calls the new
result Single-Times.
:: Fill in examples of Prime-times: FX, and Prime-times was recently
defined, and Prime-times is related to the interesting concept
Primes, and Prime-times is related to the interesting concept TIMES.
Many examples are found.
:: Check examples of Prime-times: CX, and FD, and Prime-times TX.
The value of Prime-times(x) is always a singleton set. Conjecture:
Inv-TIMES(x) contains precisely one bag of primes. User renames this
conjecture "The unique factorization theorem". AM prints out that
this will probably be very natural and important. The reason for
this is that Primes was itself derived from TIMES, so any conjecture
connecting them is quite natural. Any ⊗4unexpected⊗* such natural
conjecture will probably be useful.
:: Fill in examples of Single-TIMES: FX, and this concept TX. Many
found.
:: Check examples of Single-TIMES: CX, and it TX, and FD. The value
of Single-times(x) is always a singleton set. Conjecture:
Inv-TIMES(x) contains precisely one singleton bag. Single-TIMES is
actually the same as Bag-insert, in the sense that both
Single-TIMES(x) and Bag-insert(x) give the value (x) -- the bag
containing only x. In the latter case, this is because Bag-insert is
"smart" enough to supply an empty bag as the second argument S to
Bag-insert(x,S), if S is missing.
:: Fill in examples of Self-set-union: FX. ⊗4AM has dropped the
momentum of its previous whirlwind of discovery, and is simply
marking time, gathering evidence.⊗* Many examples are found.
:: Check examples of Self-set-union: CX, and FD. Apparently, this
concept is the same as Identity (but with domain/range restricted to
Sets). Replace by a conjecture.
:: Fill in examples of Self-bag-union: FX. ⊗4On the same track, but
boring.⊗* Many found.
:: Check examples of Self-bag-union: CX, and FD. All are confirmed.
Nothing interesting noticed.
:: Check examples of Inv-ADD: CX. Inv-ADD(x) always contains a
singleton bag (x), a doubleton bag, a tripleton, a bag of 1's,... So
many conjectures that:
:: Restrict the domain of Inv-ADD: because Inv-Add is interesting,
related to the interesting concept Add, FD, and the previous task
specifically suggested this action. When the domain is restricted to
primes, AM defines `Inv-Add-primes'. When it restricts Inv-Add to
work only on evens, AM thereby defines the operation it calls
`Inv-Add-evens'.
:: Fill in examples of Inv-add-primes: FX, and this concept was just
defined, and FD. Many found.
:: Check examples of Inv-add-primes: CX, and FD. All were confirmed,
but nothing special noticed.
:: Fill in examples of Inv-add-evens: FX, and this concept was
recently defined. Many examples found.
:: Check examples of Inv-add-evens: CX, and FD. Confirmed.
Inv-Add-evens(x) always contains a bag of primes. This is mildly
surprising, and prompts:
:: Restrict the range of Inv-Add-evens to bags of primes: because
Inv-Add-evens is recently interesting, and Primes is more interesting
than Numbers, and the previous task specifically requested this
action (hence FD). AM names the new operation Prime-ADD.
:: Restrict the range of Inv-ADD to singletons: because Inv-Add is
interesting, singletons are more interesting than sets, AM just
worked on Inv-Add, AM recently worked on Inv-Add, and an earlier task
specifically suggested this action. Thus Single-Add is born.
:: Fill in examples of Prime-ADD: FX, and Prime-add was recently
defined. Many found.
:: Check examples of Prime-ADD: CX, and FD. The value of Prime-ADD(x)
is always a nonempty set (of bags of primes). So conjectured
(domain/range changed). User renames this conjecture "Goldbach's
conjecture".
:: Fill in examples of Single-ADD: FX, and this concept was recently
defined. Many found.
:: Check examples of Single-ADD: CX, and FD. The value of
Single-ADD(x) is always a singleton set. Conjecture: Inv-ADD(x)
contains precisely one singleton bag. Single-ADD is actually the same
as Bag-insert (and Single-TIMES).
:: Restrict the range of Prime-ADD to singletons: because analogic to
Prime-TIMES, and Prime-Add is interesting, and Singletons is more
interesting than Sets. This was initiated by analogy, not by an
earlier task specifically suggesting that the restriction be done.
In this case, AM is asking which numbers are uniquely representable
as the sum of two primes. The new operation is Prime-ADD-s.
:: Fill in examples of Prime-ADD-s: FX, and Prime-ADD-s was just
defined. Many examples are found, but after a nontrivial processing
effort.
:: Check examples of Prime-ADD-s: CX, and FD. Nothing special
noticed.
:: Fill in examples of Times-sq: FX. ⊗4Losing the thread of
discovery, moving back to data-gathering blindness.⊗* Recall that
Times-sq is just TIMES restricted to operate on perfect squares. Many
examples found.
:: Check domain/range of Times-sq: because the range of this
operation may actually be Perfect-squares, and examples of Times-sq
were just filled in, and this concept TX, and FD. The range really
does seem to be as hoped for. Conjecture: the product of perfect
squares is a perfect square.
:: Fill in examples of Times1: FX. Recall that
Times1(x)⊗6≡⊗*TIMES(1,x). Many found.
:: Check examples of Times1: CX, and FD. Apparently Times1 is just a
restriction of Identity. Times1 is therefore replaced by a lone
conjecture: Times(x,1)=x.
:: Check examples of Times-sq: CX. Confirmed.
:: Fill in examples of Times0: FX, and Times0 TX. Many found.
:: Fill in examples of Times2': FX, and this operation TX. Many
found. Recall that Times2(x) is defined as 2⊗8#⊗*x.
:: Check examples of Times2': CX, and FD. Apparently, Times2' is the
same as Doubling. That is, x+x=2⊗8#⊗*x. A very powerful tie between
Add and Times! This was highly unexpected. It is not predicted by
the existing analogy. By analogy, AM now defines Ad2(x) as x+2, and
will invesitigate that.
:: Fill in examples of Ad2: FX, and Ad2 was jsst created. Many
examples found.
:: Check examples of Ad2: CX, and FD. Nothing interesting noticed.
⊗4AM didn't have the notion of Add1-o-Add1 at that moment, or it
could have derived the analogic conjecture between successor/addition
that it found between addition/multiplication. The same lack of
knowledge about exponentiation inhibited the perception the
times/exponent analogic relationship. Every little bit of knowledg
about operations involving Add served to raise the worth of Add
slightly. Finally, the following task rises to the top:⊗*
.SELECT 1;
:: Fill in specializations of Add: because there are very many
examples of Add, and Add has recently risen in interest. Among those
created are: Add0 (x+0), Add1, Add2', Add-sq (addition restricted to
perfect squares), Add-ev (sum of even numbers), Add-pr (sum of
primes), etc. The techniques used were the same ones used to
specialize TIMES earlier.
:: Check examples of Times0: CX. The value always seems to be 0. So
conjectured. Times0 goes away.
:: Fill in examples of Times-ev: FX. Recall that Times-ev is just
like TIMES restricted to operating on even numbers. Many examples
found.
:: Check examples of Times-ev: CX, and FD. Apparently all the
results are all Evens. Conjecture: the product of even numbers is
even. ⊗4Note that no explicit task of the form "Check D/R" had to be
executed in order to notice and correct this. The net result here is
the same: a conjecture and an alteration of the Domain/range facet of
Times-ev.⊗*
:: Fill in examples of Times-to-ev: FX. That is, consider bags of
numbers which multiply to give an even number. Many found.
:: Fill in examples of Times-to-sq: FX. Find bags of numbers whose
product is a perfect square. A few found right away, then great
difficulty in locating more examples.
.SELECT 1; ONCE TURN ON "↑↓_";
:: Check examples of Times-to-sq: CX, and FD. All arguments always
seem to be squares. Conjec: Times-to-sq is really the same as
Times-sq. Merge the two. ⊗4This is a false conjecture, since, e.g.,
the product of the numbers in the bag (2 2 3 3) is a perfect square,
but ↓_none_↓ of those numbers is itself a square. This did AM no
harm, and AM never detected its mistake.⊗*
:: Check examples of Times-to-ev: CX. The domain always seems to
contain an even number. So conjectured. ⊗4I.e., if the product of
some numbers is even, then so is one of those numbers. This
conjecture is true, at least.⊗*
:: Fill in examples of Self-Delete: FX. ⊗4Reaching way back in time.
Ugh.⊗* Many found.
:: Check examples of Self-Delete: CX. Apparently just a
specialization of Proj1, of Proj2, and of Identity.
:: Fill in examples of SubSet: FX. Many found.
:: Check example of SubSet: CX, and FD. Nothing special noticed.
:: Fill in examples of SuperSet: FX. Many found.
.ONCE TURN ON "{}";
:: Check examples of SuperSet.: CX, and FD. AM notices that if <x,y>
are related by SubSet, then Reverse-ord-pair(<x,y>) are related by
SuperSet, and conversely. This is the base connection between union
and intersection (see Tasks {[3]SUBBAG} and {[3]SUPERBAG}, where
these two concepts are defined). That is, x⊂y iff y⊃x.
.COMMENT SUBTIE: BNN;
:: Fill in examples of Compose-o-Compose-1: ⊗1FX. AM creates some
poor combinations (e.g., Square-o-Count-o-ADD-1-), some explosive
ones (e.g.,
(Compose-o-Compose)-o-(Compose-o-Compose)-o-(Compose-o-Compose)), and
even a few -- very few -- winners (e.g., SUB1-o-Count-o-Self-Insert).
⊗4This is too much like throwing "flying, hooked atoms" up into the
air, and hoping that three of them collide fortuitously. While a
little guidance may help you to find good collisions of 2 such
fliers, the combinatorial explosion swamps the poor researcher when
he takes them on three at a time. As St. Augustine observed, the Latin
`cogito' derives from `shake together', but `intelligo' derives from
`select among'. ⊗*
:: Check examples of Compose-o-Compose-1:⊗1 CX, and FD. Nothing
interesting to find.
:: Fill in examples of Compose-o-Compose-2:⊗1 FX. Recall that the
difference between this operation and the last one is merely in the
order of the composing: F-o-(G-o-H) versus (F-o-G)-o-H. AM recreates
many of the previous tasks' operations.
.ONCE TURN OFF "-";
:: Check examples of Compose-o-Compose-2:⊗1 CX, and FD. Nothing
noticed yet. ⊗4Later on, AM finds that one after another of the
operations created in the preceding task as, say,
Compose-o-Compose-1(F,G,H), is really the same as the corresponding
operation created as Compose-o-Compose-2(F,G,H). Eventually, AM
conjectures that those two Compose-o-Compose operations are really
the same; that is, Compose is associative.⊗*
.Z7←BNN+21;
.SELECT 1;
:: :- ⊗6{Z7}.⊗* Fill in and check examples of the losing compositions
just created.
.BNN←Z7;
:: Fill in examples of Add-sq: FX, and Add-sq is related to the
interesting concept Add. Recall that Add-sq is just addition,
restricted to perfect squares. Many examples found.
:: Check domain/range entries of Add-sq: because the range may also
be Perfect-squares, and examples of Add-sq were just filled in (hence
FD), and Add-sq is related to the interesting concept Add. The range
isn't Perfect-squares (e.g., 4+9 is not square), but some values are,
so AM defines the predicate Add-sq-sq(x,y), which is True iff x and y
are perfect squares and their sum is a perfect square as well (e.g.,
Add-sq-sq(16,9)). Add-sq-sq.Defn is a predicate which is true if its
3 arguments are squares, say x↑2, y↑2, z↑2, and if the sum of the
first two is equal to the third: x↑2+y↑2=z↑2.
:: Fill in examples of Add-pr: FX, and Add-pr is related to the
interesting concept Add. That is, the sum of a pair of primes.
:: Check Domain/range entries of Add-pr: CX. AM defines the set of
pairs of primes whose sum is also a prime (e.g., Add-pr-pr(2,5)).
⊗4In a rather bizarre way, AM has defined prime pairs. The sum of two
primes can be a prime iff one of them is 2. So Add-pr-pr can really
be considered a predicate on one prime argument x, which returns True
iff x+2 is a prime; i.e., iff x is the lower member of a prime pair.
There is something at once awful and sublime about this derivation of
prime pairs. Perhaps this captures the spirit of AM's actions as a
whole, so let's stop this trace right here.⊗*
.E
.ASSEC(An `Unadulterated' Trace)
.UNADULT: SSECNUM;
Here is the way that the AM program begins. The human user's typing
will appear in italics$$ This is not a doctoring: I have written an
i/o routine for AM which prints α%4 before everything the user types,
and α%* afterwards. The `PUB' documentation program interprets this to mean
"switch to font 4" and "switch back to font 1". This document was
PUBBed with font 4 defined as italics. $. He first types ⊗4(START)⊗*
to start the system, after which AM asks him some questions. Finally,
the main Select&Execute-a-TASK loop of AM is entered.
.ONCE TURN ON "{}"
The careful reader will notice several small changes in this
transcript, compared to the nicely doctored ones which preceded it.
For one thing, the
task numbering here is not precisely the same as in the rest of this
document. A task is called a "Cand", and the agenda is called
"CANDS". Only some of the reasons are printed out, and they are not
as "chatty" as the reasons in. e.g., Chapter {[2]EXAM1}'s example
trace. The user has asked AM to type out the top three tasks on the
agenda at each "cycle". In a better hardware environment, the user
could dynamically watch the top hundred tasks bubbling around on one
side of a CRT screen. To interrupt AM, the user types CONTROL-I.
At that moment he has a very limited syntax of
questions he may ask. See (αα) below (page {[3]ALPP}).
An approximate level of familiarity of the user with the AM program
is maintained by AM, as a numeric variable. Initially, its value is
determined by the number of times the human user has used AM in the
past.$$ I shall resist the temptation to call this a simple "user
model", even in a footnote. $ It gradually changes in value as a
single session proceeds. Many print statements use this variable to
determine the necessary level of detail to type. For example,
contrast
the line pointed to by an arrow labelled
⊗2(β)⊗* below with the line labelled
⊗2(ε)⊗*. In between, the variable increased to
the point where a detailed message was thought to be superfluous.
The level of detail needed for clarity should not be confused with
the level of verbosity of output that is desired. Should the user see
every function call, or the results of each task, or just monitor the
overall character of what AM is doing? A separate variable is
maintained for this verbosity indication. Finally, another partially
independent dimension is the amount of control the user wishes to
have on AM. Must he approve each move AM makes, occasionally redirect
AM, be able to ask questions? Another variable indicates the level of
user control in effect at the moment. The first several questions
deal with setting up these parameters.
.BEGIN NOFILL INDENT 0 SELECT 3; PREFACE 0; TURN OFF "{}→←"
INTERLISP-10 4-JAN-75 ...
Good afternoon, Doug.
←⊗4(START)⊗*
Please type in your last name ( then carriage-return):⊗4FEIGENBAUM⊗*
Almost ready to enter AM's main loop, Ed.
Ed, you have used AM once before.
Do you feel like you need some refreshing about how to work with it? ⊗4Yes⊗*
AM has 113 concepts to start with, each with only
about 5 of its potential 30 facets ( parts) filled in.
Repeatedly, AM selects a part of a concept,
and tries to fill it in or check it. In this process, new
concepts may emerge and be granted full status; in those cases,
almost all their parts will be empty at the time of their creation.
CANDS is a list of suggested future activities for AM.
Repeatedly, AM picks a Candidate from CANDS and does what it says.
A typical Cand might be:
( Fill in examples of interesting compositions).
Each Cand also has a list of reasons explaining why it was
proposed, and a numeric rating of its overall value.
DO-THRESHhold is a numeric variable that indicates the lowest
rating a Cand may have and still be executed by AM.
If no Cand on CANDS measures up, then all the concepts try to suggest
new candidates, which are merged into CANDS.
DISCLAIMER: The user interface is still unfinished, and in fact
the only polished part is the following message describing it! Try it
at your own risk!
You, Ed, can affect this concept growing process.
At any time, you may hit α↑I, which will Interrupt me.
Once interrupted, I will answer one question or perform one task;
a typical question I can answer is WHY;
a typical task is ( Raise the Interest Level of the Frobnate Concept).
A second way to interact with me is to help me decide
which Cand to do next each time. You can see my top choices, their
reasons, and overrule me if you want. The variable Seencands is
the number of Candidates you see each time, and Ucontrol indicates
the amount of control you have over my choosing.
To keep you informed, I will periodically print out messages.
The level of verbosity can be changed by interrupting me.
More details can be obtained when you interrupt with α↑I.
Verbosity Level (1 - 10, or ?) .... ( Please terminate your response
with a carriage-return) ...⊗4?⊗*
Verbosity = the amount of data that AM spews out to Ed.
In this system, Verbosity is just a numeric-valued variable
which the Printing functions look at.
Verbosity level 0 suppresses all messages.
Verbosity level 5 lets most important messages get printed.
Verbosity level 10 dumps out enough to actually get some
feeling for the inner workings of AM.
The suggested value for Ed is 8.
Verbosity Level (1 - 10, or ?) .... ( Please terminate your response
with a carriage-return) ...⊗410⊗*
User-control Level ( 0 - 10, or ? ) ....⊗4?⊗*
User-control = the degree to which you supervise AM's activities
In this system, User-control is just a numeric-valued variable
which the top-level control functions look at.
User-control level 0 lets you gain control only via α↑I.
User-control level 5 lets you see a few of AM's alternatives,
and waits 6 seconds for you to OK its choice.
User-control level 10 displays several alternative Candidates,
and waits indefinitely until you to select one.
User-control Level ( 0 - 10, or ? ) ....⊗44⊗*
Before deciding which new Cand to work on, I'll print my top choices.
How many Candidates would you like to see each time?
( I suggest 4): ⊗43⊗*
Should I tell you my reasons for each Cand I am considering selecting
each time? ⊗4No⊗*
Should I tell you my reasons for the Cand I actually select each time?
⊗4Yes⊗*
If you have not typed anything within 4 seconds after a prompt,
then AM will fill in a default answer for you.
A space will suffice to keep AM from defaulting on you,
while you think about what to reply to any question AM asks you.
In general, your response should be terminated by a carriage return.
Would you like to reset this waiting time? ⊗4No⊗*
Entering AM's main loop now.
No Cand on CANDS is good enuf.
Do-thresh reduced from 500 to 333
Must find new candidates and merge them into CANDS.
The top 3 Cands are:
1: Fill in some examples of Set-struc-intersect
2: Fill in some examples of Set-struc-join
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (We have no examples
for SET-STRUC-INTERSECT yet)
Beginning 1st cycle.
Failed. Tried to fill in new examples of SET-STRUC-INTERSECT.
⊗6<At this moment, the user hit control-I and interrupted AM.>⊗*
.ALPP: PAGE; ONCE TURN ON "→";
?: (W, I, E, M, N, ?, Q) ⊗4?⊗* →⊗8←αααα⊗*⊗2(αα)⊗3
Here are more detailed explanations of your options:
W Why: AM gives Ed the explanation behind its last printed
message.
I Interest: Ed can modify the interest ratings of concepts and
Candidates.
E Evaluate: Ed types in an expression and AM runs EVAL on it.
M Message: What was the last message that AM did NOT type out
because the verbosity was too low?
N Name: Rename some concept to whatever you want to call it.
Q Quit: resume execution.
In general, AM will automatically resume execution after answering one
query. You must hit α↑I again to interrupt.
?: ⊗4W⊗*
Why: (No examples of SET-STRUC-INTERSECT were found; there
is no reason to even consider specializing it further)
This Cand used 11.159 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Set-struc
2: Fill in some examples of Coalesce
3: Fill in some examples of Nonempty-struc
I choose first Cand. OK? ⊗4yes.⊗*
The 2 reasons for considering this Cand are:
(Active-exs specifically asked for some examples of SET-STRUC
, while trying to Fill in some Set-struc-intersect examples)
(We have no examples for SET-STRUC yet)
Beginning 2nd cycle.
Creating new Being, similar to SET-STRUC, named INT-SET-STRUC, but
restricted so as to make it more interesting.
An INT-SET-STRUC is any SET-STRUC for which (Each pair of
elements satisfies the same interesting predicate P (for some P)).
Filled in examples of SET-STRUC.
0 examples existed originally on SET-STRUC.
11 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
(CLASS)
(CLASS DOUG CORDELL BRUCE)
(CLASS R0-7 R1-7 R2-7 R3-7 R4-7 R5-7 R6-7 R7-7)
(CLASS A)
(CLASS B)
(CLASS A B)
(CLASS 0 D F I M)
After eliminating duplicate and already-known entries, AM finds that.
only 7 new, distinct examples of SET-STRUC had to be added.
Do-thresh raised from 332 to 346 because this last Cand succeeded, so
.ONCE TURN ON "→"
we raise our hopes-- and our standards-- temporarily.→⊗8←αααα⊗*⊗2(β)⊗3
This Cand used 23.743 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Int-set-struc
2: Fill in some examples of Coalesce
3: Check all examples of Set-struc
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (Any example of
INT-SET-STRUC is automatically an interesting example of SET-STRUC)
Beginning 3rd cycle.
Won't try to create a restricted interesting version of INT-SET-STRUC.
Filled in examples of INT-SET-STRUC.
0 examples existed originally on INT-SET-STRUC.
13 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
(CLASS)
(CLASS A)
(CLASS B)
After eliminating duplicate and already-known entries, AM finds that.
only 3 new, distinct examples of INT-SET-STRUC had to be added.
.ONCE TURN ON "→"
Do-thresh raised from 346 to 358.→⊗8←αααα⊗*⊗2(ε)⊗3
This Cand used 11.881 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Obj-equal
2: Check all examples of Int-set-struc
3: Check all examples of Set-struc
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (We have no examples
for OBJ-EQUAL yet)
Beginning 4th cycle.
Record of attempts to find examples:-----------------------------------
An ex ( sought) is: ((CLASS A),(CLASS A) → T) +------------------
----+---------------------------------------+---------------------------
--------+----------+------+---
Found 6 examples ( and 151 non-exs), in 11.644 secs.
Ratio of exs to non-exs is too low ( 6 / 151); Exs are too sparse.
AM will sometime try to generalize OBJ-EQUAL.
Won't try to create a restricted interesting version of OBJ-EQUAL.
Filled in examples of OBJ-EQUAL.
0 examples existed originally on OBJ-EQUAL.
6 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
((CLASS A) (CLASS A) → T)
((CLASS O D F I M) (CLASS O D F I M) → T)
(FALSE FALSE → T)
After eliminating duplicate and already-known entries, AM finds that.
only 3 new, distinct examples of OBJ-EQUAL had to be added.
Do-thresh raised from 358 to 359.
This Cand used 17.886 cpu seconds.
No Cand on CANDS is good enuf.
Do-thresh reduced from 359 to 239
Must find new candidates and merge them into CANDS.
The top 3 Cands are:
1: Fill in some examples of Set-struc-intersect
2: Check all examples of Int-set-struc
3: Fill in some generalizations of Obj-equal
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (We have no examples
for SET-STRUC-INTERSECT yet)
AM recently tried this same Cand, so let's skip it now.
The top 3 Cands are:
1: Check all examples of Int-set-struc
2: Fill in some generalizations of Obj-equal
3: Check all examples of Set-struc
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (Some new , unchecked
examples of INT-SET-STRUC have recently been added)
Beginning 5th cycle.
AM is forgetting the entire SUGG facet of the INT-SET-STRUC concept.
Because: (No sense using this suggestion more than once).
Checked examples of INT-SET-STRUC and all entries were confirmed
This Cand used 11.362 cpu seconds.
The top 3 Cands are:
1: Check all examples of Set-struc
2: Fill in some generalizations of Obj-equal
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (Some new , unchecked
examples of SET-STRUC have recently been added)
Beginning 6th cycle.
Based on empirical experiments, AM believes that SET-STRUC may really
be no more specialized than UNORD-OBJ.
Closer inspection reveals that the evidence for this was quite flimsy.
AM will wait until some examples of any of these have been found: (
BAG-STRUC), and then see if they truly also are SET-STRUC's.
Based on empirical experiments, AM believes that SET-STRUC may really
be no more specialized than NONMULT-STRUC.
Closer inspection reveals that the evidence for this was quite flimsy.
AM will wait until some examples of any of these have been found: (
OSET-STRUC), and then see if they truly also are SET-STRUC's.
Checked examples of SET-STRUC.
5 entries were there initially.
1 small modifications had to be made.
5 entries are present now.
This Cand used 8.008 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Bag-struc
2: Fill in some examples of Oset-struc
3: Fill in some generalizations of Obj-equal
I choose first Cand. OK? ⊗4yes.⊗*
The reason for considering this Cand is: (We have no examples
for BAG-STRUC yet)
Beginning 7th cycle.
Filled in examples of BAG-STRUC.
0 examples existed originally on BAG-STRUC.
19 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
(BAG)
(BAG A)
(BAG B)
(BAG A B)
(BAG A A)
(BAG A A B)
(BAG 0 D F I M)
(BAG A B (BAG B) (CLASS))
(BAG BRUCE CORDELL DOUG)
(BAG R0-7 R1-7 R2-7 R3-7 R4-7 R5-7 R6-7 R7-7)
After eliminating duplicate and already-known entries, AM finds that.
only 10 new, distinct examples of BAG-STRUC had to be added.
XEQ-CAND
Do-thresh raised from 239 to 264.
This Cand used 17.692 cpu seconds.
The top 3 Cands are:
1: Fill in some generalizations of Obj-equal
2: Fill in some examples of Oset-struc
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (The ratio of examples to non-examples of
OBJ-EQUAL is too low ; OBJ-EQUAL is too specialized , too narrow)
Beginning 8th cycle.
Considering genlizing a recursive defn of OBJ-EQUAL
Will try to remove a conjunct.
2 possible conjuncts to choose from.
AM generalizes OBJ-EQUAL into the new concept GENL-OBJ-EQUAL, by
not recursing on the CAR of each arg.
i.e., GENL-OBJ-EQUAL will not have a recursive check
like this one, which is present in OBJ-EQUAL:
APPLYB
(QUOTE OBJ-EQUAL)
(QUOTE DEFN)
(CAR BA1)
(CAR BA2)
AM generalizes OBJ-EQUAL into the new concept GENL-OBJ-EQUAL-1,
by not recursing on the CDR of each arg.
i.e., GENL-OBJ-EQUAL-1 will not have a recursive check
like this one, which is present in OBJ-EQUAL:
APPLYB
(QUOTE OBJ-EQUAL)
(QUOTE DEFN)
(CDR BA1)
(CDR BA2)
If any of (GENL-OBJ-EQUAL GENL-OBJ-EQUAL-1) ever seems to be too
specialized, AM will consider disjoining it with other members of that
set.
Filled in generalizations of OBJ-EQUAL.
0 generalizations existed originally on OBJ-EQUAL.
2 potential new entries were just proposed.
Eliminating duplicates, the newly constructed generalizations are:
GENL-OBJ-EQUAL
GENL-OBJ-EQUAL-1
After eliminating duplicate and already-known entries, AM finds that.
all 2 new, distinct generalizations of OBJ-EQUAL had to be added.
Do-thresh raised from 264 to 335.
This Cand used 6.667 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Genl-obj-equal-1
2: Fill in some examples of Genl-obj-equal
3: Fill in some examplls of Oset-struc
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (The generalization GENL-OBJ-EQUAL-1 of OBJ-EQUAL
is relatively new and has no exs of its own yet , excepting those
of OBJ-EQUAL)
Beginning 9th cycle.
?: ⊗4N⊗*
Rename which existing concept? ⊗4GENL-OBJ-EQUAL⊗*
What is its new name? ⊗4SAME-SIZE⊗*
Done.
Record of attempts to find examples:
-
An ex ( sought) is: ((VECTOR BAG) (VECTOR B (BAG B) (CLASS) A))+-----++
-+---+-------++-+--++-+------------++-------+--+--------+-----------+-+-
---------++--+--------------------++------+-+----+
Found 26 examples ( and 105 non-exs), in 8.037 secs.
A nice ratio of exs/non-exs was encountered for GENL-OBJ-EQUAL-1
Won't try to create a restricted interesting version of
GENL-OBJ-EQUAL-1.
Filled in examples of GENL-OBJ-EQUAL-1.
0 examples existed originally on GENL-OBJ-EQUAL-1.
26 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
((VECTOR BAG) (VECTOR B (BAG B) (CLASS) A) → T)
((OSET 0 D F I M) (OSET 0 D F I M) → T)
((BAG) (BAG DON ED) → T)
((OSET D M I F 0) (OSET D M I F 0) → T)
((PAIR DOUG BRUCE) (PAIR DOUG BRUCE) → T)
((VECTOR BAG) (VECTOR D M I F 0) → T)
((VECTOR B) (VECTOR D M I F 0) → T)
((BAG B) (BAG B) → T)
((VECTOR D M I F 0) (VECTOR A A B) → T)
((BAG A) (BAG A B) → T)
((VECTOR) (VECTOR B (BAG B) (CLASS) A) → T)
((OSET BRUCE DON) (OSET B A) → T)
((PAIR COMPOSE-EXS COMPOSE-EXS) (PAIR LIST-STRUC-INTERSECT
ANYB-SPEC) → T)
((OSET R2-1 R2-2 R2-3 R2-4 R2-5 R2-6 R3-1 R3-2 R3-3 R3-4 R3-5
R3-6 R4-1 R4-2 R4-3 R4-4 R4-5 R4-6 R5-1 R5-2 R5-3 R5-4 R5-5 R5-6 R6-1
R6-2 R6-3 R6-4 R6-5 R6-6) (OSET 0 D F I M) → T)
((OSET A B (BAG B) (CLASS)) (OSET B (BAG B) (CLASS) A) → T)
((OSET 0 D F I M) (OSET B) → T)
((VECTOR A A) (VECTOR A B) → T)
((OSET DON ED) (OSET BAG) → T)
((BAG A A B) (BAG) → T)
((OSET B) (OSET BRUCE DON) → T)
((CLASS DON ED) (CLASS A) → T)
((PAIR LIST-STRUC-INSERT CANONIZE) (PAIR LIST-STRUC-INTERSECT
ANYB-SPEC) → T)
((VECTOR) (VECTOR BAG) → T)
((OSET A) (OSET D M I F 0) → T)
((VECTOR BAG) (VECTOR BAG) → T)
After eliminating duplicate and already-known entries, AM finds that.
only 25 new, distinct examples of GENL-OBJ-EQUAL-1 had to be added.
Do-thresh raised from 335 to 367.
This Cand used 29.095 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Same-size
2: Check all examples of Genl-obj-equal-1
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The 2 reasons are:
(Interestingness of SAME-SIZE has changed recently)
(The generalization SAME-SIZE of OBJ-EQUAL is relatively new
and has no exs of its own yet , excepting those of OBJ-EQUAL)
Beginning 10th cycle.
Record of attempts to find examples:
-
An ex ( sought) is: ((VECTOR A) (OSET B))+---+--+--------+----++++-----
----+-+---+-+-----+-------+--+-+---+-+----------+-+----------+---+-----+
----+---+---------------+
Found 26 examples ( and 102 non-exs), in 8.032 secs.
A nice ratio of exs/non-exs was encountered for SAME-SIZE
Won't try to create a restricted interesting version of SAME-SIZE.
Filled in examples of SAME-SIZE.
0 examples existed originally on SAME-SIZE.
36 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
((OSET 0 D F I M) (OSET 0 D F I M) → T)
((OSET D M I F 0) (OSET D M I F 0) → T)
((PAIR DOUG BRUCE) (PAIR DOUG BRUCE) → T)
((BAG B) (BAG B) → T)
((OSET BRUCE DON) (OSET B A) → T)
((PAIR COMPOSE-EXS COMPOSE-EXS) (PAIR LIST-STRUC-INTERSECT
ANYB-SPEC) → T)
((OSET A B (BAG B) (CLASS)) (OSET B (BAG B) (CLASS) A) → T)
((VECTOR A A) (VECTOR A B) → T)
((PAIR LIST-STRUC-INSERT CANONIZE) (PAIR LIST-STRUC-INTERSECT
ANYB-SPEC) → T)
((VECTOR BAG) (VECTOR BAG) → T)
((VECTOR A) (OSET B) → T)
((BAG A B) (OSET B A) → T)
((CLASS 0 D F I M) (BAG 0 D F I M) → T)
((VECTOR B) (BAG A) → T)
((PAIR LIST-STRUC-INTERSECT ANYB-SPEC) (PAIR DOUG BRUCE) → T)
((OSET DON ED) (PAIR LIST-STRUC-INTERSECT ANYB-SPEC) → T)
((BAG 0 D F I M) (VECTOR D M I F 0) → T)
((VECTOR B) (BAG B) → T)
((OSET BAG) (OSET A) → T)
((VECTOR A A) (BAG A A) → T)
((CLASS A) (VECTOR BAG) → T)
((CLASS A B) (OSET A B) → T)
((PAIR COMPOSE-EXS COMPOSE-EXS) (OSET DON ED) → T)
((VECTOR A) (OSET A) → T)
((OSET BAG) (CLASS A) → T)
((OSET A) (CLASS A) → T)
((OSET B) (OSET A) → T)
((BAG 0 D F I M) (OSET 0 D F I M) → T)
((OSET DON ED) (OSET ED CORDELL) → T)
((OSET ED CORDELL) (OSET B A) → T)
((OSET A) (BAG B) → T)
((OSET B A) (OSET A B) → T)
((VECTOR B A) (OSET ED CORDELL) → T)
((OSET A) (VECTOR BAG) → T)
((OSET B A) (OSET DON ED) → T)
After eliminating duplicate and already-known entries, AM finds that.
only 35 new, distinct examples of SAME-SIZE had to be added.
Do-thresh raised from 367 to 406.
This Cand used 21.725 cpu seconds.
The top 3 Cands are:
1: Check all examples of Same-size
2: Check all examples of Genl-obj-equal-1
3: Check all things which just barely miss being examples of
Same-size
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (Some new , unchecked examples of SAME-SIZE
have recently been added)
Beginning 11st cycle.
Checked examples of SAME-SIZE.
35 entries were there initially.
1 had to be completely discarded.
4 had to be transferred elsewhere.
30 entries are present now.
Do-thresh raised from 406 to 421.
This Cand used 6.917 cpu seconds.
The top 3 Cands are:
1: Check all examples of Genl-obj-equal-1
2: Check all things which just barely miss being examples of
Same-size
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (Some new , unchecked examples of
GENL-OBJ-EQUAL-1 have recently been added)
Beginning 12nd cycle.
Checked examples of GENL-OBJ-EQUAL-1.
25 entries were there initially.
1 had to be completely discarded.
4 had to be transferred elsewhere.
20 entries are present now.
This Cand used 4.711 cpu seconds.
No Cand on CANDS is good enuf.
Do-thresh reduced from 421 to 333
Must find new candidates and merge them into CANDS.
The top 3 Cands are:
1: Canonize these 2 arguments: Genl-obj-equal-1 and Obj-equal
2: Canonize these 2 arguments: Same-size and Obj-equal
3: Fill in some examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (It would be nice to find a canonical ( with
respect to Genl-obj-equal-1 and Obj-equal ) representation C for any
Object X ; that is ,
( GENL-OBJ-EQUAL-1 x y ) iff
( OBJ-EQUAL ( C x ) ( C y ) ) .
)
Beginning 13rd cycle.
Experiments indicate that GENL-OBJ-EQUAL-1 is affected by the varying
the type of structure of its arguments.
GENL-OBJ-EQUAL-1 doesn't look at any elements of OBJECT except possibly
the car of the structure which denotes its type, so AM replaces the
tail of OBJECT by a canonical distinguished tail, say NIL.
Succeeded!
Some conjectures that AM considers believable:
OBJ-EQUAL, restricted to canonical OBJECT's, is indistinguishable
from GENL-OBJ-EQUAL-1.
There is a powerful analogy between
GENL-OBJ-EQUAL-1.................OBJ-EQUAL
OBJECT...........................CANONICAL-OBJECT
operators on and into those operators restricted to
OBJECT...........................CANONICAL-OBJECT
statements involving these.......statements involving these
Do-thresh raised from 333 to 341.
This Cand used 9.02 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Canonical-object
2: Restrict the following: Genl-obj-equal-1 Canonical-object Domain
3: Canonize these 2 arguments: Same-size and Obj-equal
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (Any example of CANONICAL-OBJECT is a canonical
example of OBJECT)
Beginning 14th cycle.
AM will now try to produce examples of CANONICAL-OBJECT by running the
following operations:
(CANONIZE-GENL-OBJ-EQUAL-1&OBJ-EQUAL).
Won't try to create a restricted interesting version of
CANONICAL-OBJECT.
Filled in examples of CANONICAL-OBJECT.
0 examples existed originally on CANONICAL-OBJECT.
165 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
(VECTOR)
(BAG)
(CLASS)
(OSET)
FALSE
T
TRUE
(PAIR)
(T)
(NIL)
(TRUE)
(FALSE)
After eliminating duplicate and already-known entries, AM finds that.
only 12 new, distinct examples of CANONICAL-OBJECT had to be added.
Do-thresh raised from 341 to 391.
This Cand used 23.827 cpu seconds.
The top 3 Cands are:
1: Restrict the following: Genl-obj-equal-1 Canonical-object Domain
2: Canonize these 2 arguments: Same-size and Obj-equal
3: Fill in examples of Coalesce
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (GENL-OBJ-EQUAL-1 was one of the predicates
which defined the new concept CANONICAL-OBJECT , so it is worth
considering the restriction of GENL-OBJ-EQUAL-1 to that subset of
OBJECT 's)
Beginning 15th cycle.
Succeeded!
Do-thresh raised from 391 to 431.
This Cand used 3.562 cpu seconds.
The top 3 Cands are:
1: Canonize these 2 arguments: Same-size and Obj-equal
2: Fill in some examples of Coalesce
3: Restrict the following: Obj-equal Canonical-object Domain
I choose first Cand. OK? ⊗4yes.⊗*
The reason is: (It would be nice to find a canonical ( with
respect to Same-size and Obj-equal ) representation C for any Object
X ; that is ,
( SAME-SIZE x y ) iff
( OBJ-EQUAL ( C x ) ( C y ) ) .
)
Beginning 16th cycle.
Experiments indicate that SAME-SIZE is not affected by varying the type
of structure of its arguments.
Experiments indicate that SAME-SIZE is not affected by reordering
elements of its structural arguments.
So any canonical arguments can be Bags and Sets.
Experiments indicate that SAME-SIZE is affected by the presence of
multiple elements in its structural arguments.
So any canonical arguments can be Bags and Lists.
SAME-SIZE doesn't look at the specific elements in OBJECT, like
OBJ-EQUAL does, so AM can replace them all by a single distinguished
element, say T.
Succeeded!
Some conjectures that AM considers believable:
OBJ-EQUAL, restricted to canonical BAG-STRUC's, is indistinguishable
from SAME-SIZE.
There is a powerful analogy between
SAME-SIZE........................OBJ-EQUAL
BAG-STRUC........................CANONICAL-BAG-STRUC
operators on and into............those operators restricted to
BAG-STRUC.................. CANONICAL-BAG-STRUC
statements involving these.......statements involving these
Do-thresh raised from 431 to 457.
This Cand used 17.297 cpu seconds.
The top 3 Cands are:
1: Fill in some examples of Canonical-bag-struc
2: Restrict the following: Same-size Canonical-bag-struc Domain
3: Restrict the following: Bag-struc-join Canonical-bag-struc Domain
I choose first Cand. OK? ⊗4yes⊗*.
The reason is: (Any example of CANONICAL-BAG-STRUC is a canonical
example of BAG-STRUC)
Beginning 17th cycle.
AM will now try to produce examples of CANONICAL-BAG-STRUC by running
the following operations:
(CANONIZE-SAME-SIZE&OBJ-EQUAL).
Filled in examples of CANONICAL-BAG-STRUC.
0 examples existed originally on CANONICAL-BAG-STRUC.
211 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
(BAG)
(BAG T T)
(BAG T T T)
(BAG T)
(BAG T T T T T)
(BAG T T T T)
(BAG T T T T T T T T T T T T T T T T T T T T T T T T T T T T
T T)
After eliminating duplicate and already-known entries, AM finds that.
only 7 new, distinct examples of CANONICAL-BAG-STRUC had to be added.
Do-thresh raised from 457 to 478.
This Cand used 35.918 cpu seconds.
The top 3 Cands are:
1: Restrict the following: Same-size Canonical-bag-struc Domain
2: Restrict the following: Bag-struc-join Canonical-bag-struc Domain
3: Restrict the following: Obj-equal Canonical-object Domain
I choose first Cand. OK? ⊗4yes⊗*.
The reason is: (SAME-SIZE was one of the predicates which defined
the new concept CANONICAL-BAG-STRUC , so it is worth considering
the restriction of SAME-SIZE to that subset of BAG-STRUC 's)
Beginning 18th cycle.
Succeeded!
Do-thresh raised from 478 to 495.
This Cand used 3.311 cpu seconds.
?: ⊗4N⊗*
Rename which existing concept? ⊗4CANONICAL-BAG-STRUC⊗*
What is its new name? ⊗4NUMBER⊗*
Done.
?: (W, I, E, M, N, ?, Q) ⊗4N⊗*
Rename which existing concept? ⊗4CANONIZE-SAME-SIZE&OBJ-EQUAL⊗*
What is its new name? ⊗4SIZE⊗*
Done.
The top 3 Cands are:
1: Check all examples of Number
2: Restrict the following: Obj-equal Canonical-object Domain
3: Check all examples of Canonical-object
I choose first Cand. OK? ⊗4yes⊗*.
The 2 reasons are:
(Interestingness of NUMBER has changed recently)
(Some new , unchecked examples of NUMBER have recently been
added)
Beginning 19th cycle.
Checked examples of NUMBER and all entries were confirmed
This Cand used 1.909 cpu seconds.
The top 3 Cands are:
1: Check all examples of Canonical-object
2: Check all things which just barely miss being examples of Number
3: Restrict the following: Bag-struc-join Number Domain
I choose first Cand. OK? ⊗4yes⊗*.
The reason is: (Some new , unchecked examples of
CANONICAL-OBJECT have recently been added)
Beginning 20th cycle.
CANONICAL-OBJECT has 7 examples which occupy 11 list cells, but is not
interesting enough to warrant taking up that much space; so about 2
will be selected at random and forgotten.
Checked examples of CANONICAL-OBJECT.
12 entries were there initially.
10 were never confirmed or rejected.
2 had to be completely discarded.
5 entries are present now.
This Cand used 16. 626 cpu seconds.
No Cand on CANDS is good enuf.
Do-thresh reduced from 495 to 340
Must find new candidates and merge them into CANDS.
The top 3 Cands are:
1: Fill in some examples of Size
2: Fill in some examples of Coalesce
3: Restrict the following: Bag-struc-join Number Domain
I choose first Cand. OK? ⊗4yes⊗*.
The reason is: (We have no examples for SIZE yet)
Beginning 21st cycle.
Record of attempts to find examples:
An ex ( sought) is: (BAG T T)++++++++++++++++++++++++++
Found 26 examples ( and 0 non-exs), in .996 secs.
A nice ratio of exs/non-exs was encountered for SIZE
Won't try to create a restricted interesting version of SIZE.
Filled in examples of SIZE.
13 examples existed originally on SIZE.
26 potential new entries were just proposed.
Eliminating duplicates, the newly constructed examples are:
((BAG T T) → (BAG T T))
((BAG T T T T T) → (BAG T T T T T))
((BAG B) → (BAG T))
((BAG A A) → (BAG T T))
((BAG T T T) → (BAG T T T))
((BAG T T T T) → (BAG T T T T))
((BAG A B) → (BAG T T))
((BAG R2-1 R2-2 R2-3 R2-4 R2-5 R2-6 R3-1 R3-2 R3-3 R3-4 R3-5
R3-6 R4-1 R4-2 R4-3 R4-4 R4-5 R4-6 R5-1 R5-2 R5-3 R5-4 R5-5 R5-6 R6-1
R6-2 R6-3 R6-4 R6-5 R6-6) → (BAG T T T T T T T T T T T T T T T T T T
T T T T T T T T T T T T))
((BAG A A B) → (BAG T T T))
((BAG 0 D F I M) → (BAG T T T T T))
((BAG A) → (BAG T))
((BAG T T T T T T T T T T T T T T T T T T T T T T T T T T T
T T T) → (BAG T T T T T T T T T T T T T T T T T T T T T T T T T T T
T T T))
((BAG DON ED) → (BAG T T))
((BAG A B (BAG B) → (CLASS)) (BAG T T T T))
((BAG A B) → (BAG T T))
After eliminating duplicate and already-known entries, AM finds that.
only 14 new, distinct examples of SIZE had to be added.
Do-thresh raised from 340 to 414.
This Cand used 9.2 cpu seconds.
.E